"."/> ".">

Rumah  >  Artikel  >  rangka kerja php  >  Penyelesaian kepada serangan csrf dalam laravel

Penyelesaian kepada serangan csrf dalam laravel

WBOY
WBOYasal
2022-06-21 16:07:533525semak imbas

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(); ?>">

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('test6','Home\TestController@test6');Route::post('test7','Home\TestController@test7');

2 Cipta kaedah yang diperlukan

	 public function test6(){
        return view('home.test.test6');
     }
     public function test7()
     {
         return "请求提交成功";
     }

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


    用户名:
         {{csrf_field()}}     

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

 'home.test.test6',

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

'home.test.test6','home.test.test7'

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

'*'

[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!

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