Rumah > rangka kerja php > Laravel > teks badan

Penyelesaian kepada serangan csrf dalam laravel

WBOY
Lepaskan: 2022-06-21 16:07:53
asal
3527 orang telah melayarinya

Penyelesaian: 1. Gunakan Laravel untuk menjana "Token CSRF" secara automatik untuk setiap Sesi pengguna Token ini boleh digunakan untuk mengesahkan sama ada pengguna yang log masuk dan orang yang memulakan permintaan adalah orang yang sama tidak, permintaan akan gagal; 2 , menyediakan fungsi bantuan global "csrf_token" untuk mendapatkan nilai Token, cuma tambah kod token dalam borang penyerahan paparan, sintaksnya ialah "<...value php="" echo="">".

Penyelesaian kepada serangan csrf dalam laravel

Persekitaran pengendalian artikel ini: sistem Windows 10, Laravel versi 9, komputer Dell G3.

Penyelesaian kepada serangan CSRF dalam Laravel

CSRF ialah singkatan Bahasa Inggeris bagi pemalsuan permintaan silang tapak

Sangat mudah untuk mengelakkan serangan CSRF dalam rangka kerja Laravel Mudah:

1. Laravel menjana Token CSRF secara automatik untuk setiap Sesi pengguna ini boleh digunakan untuk mengesahkan sama ada pengguna yang log masuk dan peminta adalah orang yang sama. (Prinsipnya adalah sama dengan kod pengesahan.)

2 Laravel menyediakan fungsi penolong global csrf_token untuk mendapatkan nilai Token, jadi anda hanya perlu menambah kod HTML berikut pada borang penyerahan paparan untuk disertakan. ia dalam Token permintaan:

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
Salin selepas log masuk

Cara mengelakkan serangan CSRF dalam Laravel

Kes: Laksanakan pengesahan mekanisme CSRF melalui kes
1 , satu dengan Paparkan borang (dapat), dan proses permintaan (siaran)

Route::get(&#39;test6&#39;,&#39;Home\TestController@test6&#39;);Route::post(&#39;test7&#39;,&#39;Home\TestController@test7&#39;);
Salin selepas log masuk

2 Cipta kaedah yang diperlukan

	 public function test6(){
        return view(&#39;home.test.test6&#39;);
     }
     public function test7()
     {
         return "请求提交成功";
     }
Salin selepas log masuk

3 Cipta borang ringkas yang diperlukan

Penyelesaian kepada serangan csrf dalam laravel

4. Kesan penyerahan (halaman ralat)

Penyelesaian kepada serangan csrf dalam laravel

Kesimpulan: Melalui kes sebentar tadi, ia menunjukkan pengesahan csrf mekanisme dalam laravel didayakan secara lalai.

5. Selesaikan masalah pelaporan ralat (cara lulus pengesahan csrf)
Penyelesaian: bawa nilai token yang diperlukan untuk csrf, dan hantarkannya ke kaedah berikutnya dengan permintaan

<form action="/home/test/test7" method="post">
    用户名:<input type="text" name="username"><br>
    <input type="hidden" name="_token" value="{{csrf_token()}}">
    {{csrf_field()}}
    <input type="submit" value="提交"></form>
Salin selepas log masuk

Untuk kaedah csrf_token Permudah: {{csrf_field()}}

Ungkapan khusus:

Penyelesaian kepada serangan csrf dalam laravel

Perbezaan antara keduanya:
Csrf_token hanyalah output Nilai token
Csrf_field mengeluarkan keseluruhan medan tersembunyi input

Cara memilih apabila menggunakannya kemudian: Dalam kebanyakan kes, anda boleh memilih mengikut situasi. Tetapi terdapat situasi di mana pembangun tidak mempunyai hak untuk memilih dan mesti menggunakan csrf_token Dalam kes ini, kaedah penyerahan borang tak segerak digunakan.

Kecualikan penghalaan pengecualian daripada pengesahan CSRF

Bukan semua permintaan perlu mengelakkan serangan CSRF, seperti permintaan kepada API pihak ketiga untuk mendapatkan data.
Pengecualian boleh ditetapkan dengan menambahkan URL permintaan untuk dikecualikan pada tatasusunan sifat $except dalam perisian tengah VerifyCsrfToken (app/Http/Middleware/VerifyCsrfToken.php):

dengan menulis konfigurasi:
Kaedah penulisan pengecualian Penghalaan Tunggal

 &#39;home.test.test6&#39;,
Salin selepas log masuk

Berbilang elemen dipisahkan dengan "," dan ikut kaedah penulisan tatasusunan.

&#39;home.test.test6&#39;,&#39;home.test.test7&#39;
Salin selepas log masuk

Jika anda perlu mengecualikan semua laluan dan menggunakan csrf, anda boleh menulis:

&#39;*&#39;
Salin selepas log masuk

[Cadangan berkaitan: tutorial video laravel]

Atas ialah kandungan terperinci Penyelesaian kepada serangan csrf dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan