Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk menyelesaikan ralat laravel 419

Bagaimana untuk menyelesaikan ralat laravel 419

PHPz
PHPzasal
2023-04-19 10:08:154043semak imbas

Apabila anda menggunakan rangka kerja Laravel, anda mungkin menghadapi ralat HTTP 419, yang merupakan mekanisme perlindungan CSRF (Cross-site Request Forgery) dalam rangka kerja Laravel. Artikel ini menerangkan isu yang berkaitan dengan ralat ini dan cara menyelesaikannya.

Peranan pensijilan CSRF

Sebelum memperkenalkan ralat Laravel 419, mari kita fahami dahulu peranan pensijilan CSRF. CSRF dalam aplikasi web biasanya merujuk kepada penyerang yang mengambil kesempatan daripada status log masuk mangsa untuk memulakan permintaan HTTP palsu untuk melakukan operasi berniat jahat. Contohnya, penyerang boleh menggunakan akaun mangsa untuk melakukan tindakan yang tidak dijangka pada tapak web, seperti menghantar spam, menukar kata laluan, dsb.

Tujuan pengesahan CSRF adalah untuk menghalang jenis serangan ini. Prinsipnya ialah apabila menghantar permintaan kepada pelayan, token yang disulitkan disertakan dalam permintaan. Apabila pelayan menerima permintaan, ia mengesahkan sama ada token adalah sama dengan token yang disimpan pada pelayan. Jika berbeza, pelayan akan menganggap ini sebagai permintaan palsu dan menolak permintaan itu sebagai serangan CSRF.

Dalam rangka kerja Laravel, pengesahan CSRF didayakan secara lalai. Rangka kerja meletakkan token dalam setiap bentuk dengan memasukkan medan tersembunyi yang dipanggil _token dalam halaman web. Apabila borang diserahkan, Laravel akan mengesahkan bahawa token dalam permintaan adalah betul. Jika token tidak betul, ralat 419 akan dikembalikan.

Punca Ralat Laravel 419

Ralat Laravel 419 biasanya disebabkan oleh sebab berikut:

  1. CSRF_token tamat tempoh atau tidak wujud

Apabila halaman dibuka dalam penyemak imbas untuk masa yang lama, CSRF_token yang dijana oleh Laravel tamat tempoh, menyebabkan kegagalan pengesahan. Pada ketika ini, sistem akan mengembalikan ralat 419. Selain itu, jika anda mengubah suai CSRF_token secara manual dalam borang, pengesahan akan gagal.

  1. Lumpuhkan kuki

Jika penyemak imbas anda mempunyai kuki dilumpuhkan, pengesahan CSRF tidak akan berfungsi dengan betul, yang akan mengakibatkan ralat Laravel 419.

  1. Fail Konfigurasi Salah

Dalam sesetengah kes, fail konfigurasi aplikasi Laravel mungkin salah, yang mungkin juga mengakibatkan ralat 419.

Cara menyelesaikan ralat Laravel 419

Atas sebab yang berbeza, kita boleh mengambil beberapa kaedah berbeza untuk menyelesaikan ralat Laravel 419:

  1. CSRF_token tamat tempoh atau tidak wujud

Satu penyelesaian ialah menggunakan JavaScript untuk mengemas kini CSRF_token secara kerap. Tambahkan kod berikut pada halaman HTML, yang akan mengemas kini token dengan kerap.

<meta name="csrf-token" content="{{ csrf_token() }}">
<script>
    setInterval(function(){
        var csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
        document.getElementsByName("_token").forEach(function(input){
            input.value = csrfToken;
        });
    }, 300000); // 5分钟
</script>

Penyelesaian lain ialah menggunakan csrf_field fungsi Pembantu Blade yang disediakan oleh Laravel.

<form method="POST" action="/your/url">
    @csrf
    ...
</form>
  1. Lumpuhkan kuki

Jika kuki dilumpuhkan dalam penyemak imbas anda, pengesahan CSRF tidak akan berfungsi dengan betul. Penyelesaiannya adalah untuk mendayakan kuki dalam penyemak imbas anda. Ini biasanya dilakukan dalam tetapan penyemak imbas.

  1. Fail konfigurasi tidak betul

Jika terdapat ralat dalam fail konfigurasi aplikasi Laravel, ia juga akan menyebabkan pengesahan CSRF gagal. Anda boleh menyemak sama ada fail config/session.php dalam projek anda wujud dan dikonfigurasikan dengan betul, memastikan nilai pilihan driver ialah file atau cookie. Juga, semak sama ada pilihan config/app.php wujud dalam fail key.

Ringkasan

Ralat Laravel 419 biasanya disebabkan oleh pengesahan CSRF. Kami boleh menggunakan beberapa kaedah mudah untuk menyelesaikan masalah ini, seperti mengemas kini CSRF_token secara kerap, mendayakan kuki penyemak imbas, menyemak fail konfigurasi, dsb. Saya harap melalui pengenalan artikel ini, anda boleh lebih memahami dan menyelesaikan 419 ralat dalam Laravel. Jika anda menghadapi masalah menyelesaikan isu, sila semak dokumentasi Laravel atau ajukan soalan dalam komuniti Laravel.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat laravel 419. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn