Penyelesaian kepada serangan csrf dalam laravel
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="">".
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
4. Kesan penyerahan (halaman ralat)
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>
Untuk kaedah csrf_token Permudah: {{csrf_field()}}
Ungkapan khusus:
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kaedah untuk mendapatkan kod kembali apabila menghantar e -mel Laravel gagal. Apabila menggunakan Laravel untuk membangunkan aplikasi, anda sering menghadapi situasi di mana anda perlu menghantar kod pengesahan. Dan pada hakikatnya ...

Tugas Jadual Laravel menjalankan penyelesaian masalah yang tidak responsif semasa menggunakan penjadualan tugas jadual Laravel, banyak pemaju akan menghadapi masalah ini: Jadual: Jalankan ...

Kaedah mengendalikan kegagalan e -mel Laravel untuk menghantar kod pengesahan adalah menggunakan Laravel ...

Cara melaksanakan fungsi jadual klik tersuai untuk menambah data dalam dcatadmin (laravel-admin) semasa menggunakan dcat ...

Kesan perkongsian sambungan Redis dalam rangka kerja Laravel dan pilih kaedah apabila menggunakan Rangka Kerja Laravel dan Redis, pemaju mungkin menghadapi masalah: melalui konfigurasi ...

Pengambilan Model Laraveleloquent: Mudah mendapatkan data pangkalan data Eloquentorm menyediakan cara ringkas dan mudah difahami untuk mengendalikan pangkalan data. Artikel ini akan memperkenalkan pelbagai teknik carian model fasih secara terperinci untuk membantu anda mendapatkan data dari pangkalan data dengan cekap. 1. Dapatkan semua rekod. Gunakan kaedah semua () untuk mendapatkan semua rekod dalam jadual pangkalan data: USEAPP \ MODELS \ POST; $ POSTS = POST :: SEMUA (); Ini akan mengembalikan koleksi. Anda boleh mengakses data menggunakan gelung foreach atau kaedah pengumpulan lain: foreach ($ postsas $ post) {echo $ post->

Sambungan pangkalan data penyewa tersuai dalam pakej lanjutan multi-penyewa Larave Stancl/penyewaan ketika membina aplikasi multi-penyewa menggunakan pakej lanjutan multi-penyewa Larave Stancl/penyewaan, ...

Cecair memproses 7 juta rekod dan membuat peta interaktif dengan teknologi geospatial. Artikel ini meneroka cara memproses lebih dari 7 juta rekod menggunakan Laravel dan MySQL dan mengubahnya menjadi visualisasi peta interaktif. Keperluan Projek Cabaran Awal: Ekstrak Wawasan berharga menggunakan 7 juta rekod dalam pangkalan data MySQL. Ramai orang mula -mula mempertimbangkan bahasa pengaturcaraan, tetapi mengabaikan pangkalan data itu sendiri: Bolehkah ia memenuhi keperluan? Adakah penghijrahan data atau pelarasan struktur diperlukan? Bolehkah MySQL menahan beban data yang besar? Analisis awal: Penapis utama dan sifat perlu dikenalpasti. Selepas analisis, didapati bahawa hanya beberapa atribut yang berkaitan dengan penyelesaiannya. Kami mengesahkan kemungkinan penapis dan menetapkan beberapa sekatan untuk mengoptimumkan carian. Carian Peta Berdasarkan Bandar
