Rumah >rangka kerja php >Laravel >Bagaimana untuk mengelakkan csrf dalam laravel
Laravel ialah rangka kerja PHP popular yang menyediakan banyak alatan praktikal dan langkah keselamatan, membolehkan pembangun membina aplikasi web lanjutan dengan mudah. Antaranya, mencegah serangan pemalsuan permintaan rentas tapak (CSRF) merupakan langkah keselamatan yang sangat penting. Dalam artikel ini, kami akan memperkenalkan cara mencegah serangan CSRF dalam Laravel dengan berkesan.
Apakah serangan CSRF?
Sebelum melihat dengan lebih mendalam tentang cara Laravel menghalang serangan CSRF, mari kita fahami dahulu apa itu serangan CSRF. Serangan CSRF (Cross-Site Request Forgery), juga dikenali sebagai "serangan satu klik" atau "menunggang sesi", ialah teknologi serangan rangkaian Penyerang menggunakan kebenaran sesi pengguna pada tapak web yang disahkan untuk melakukan serangan tanpa pengetahuan pengguna. . Ringkasnya, penyerang menipu pengguna untuk melakukan operasi di tapak web, dengan itu memindahkan dana secara haram atau mencuri maklumat sensitif pengguna.
Prinsip serangan CSRF tidak rumit. Penyerang memalsukan borang atau pautan pada tapak web, yang mengandungi permintaan untuk melakukan beberapa operasi berbahaya. Penyerang kemudiannya akan mendorong pengguna untuk mengklik atau menyerahkan borang palsu ini Apabila pengguna melakukan operasi ini, penyerang boleh menggunakan peluang ini untuk mencuri maklumat pengguna dan melakukan beberapa operasi yang menyalahi undang-undang.
Bagaimana untuk mencegah serangan CSRF?
Laravel menyediakan beberapa kaedah untuk menghalang serangan CSRF, berikut adalah beberapa kaedah yang biasa digunakan:
Laravel menggunakan token CSRF untuk Untuk mencegah Serangan CSRF, token dihantar semasa penyerahan borang dan disahkan pada bahagian pelayan. Laravel menyediakan token unik untuk setiap borang dan permintaan AJAX dalam setiap aplikasi Token ini boleh dibenamkan dalam borang dan permintaan AJAX Apabila permintaan dihantar ke pelayan, Laravel akan mengesahkan bahawa token sepadan dengan padanan token yang dijana secara rawak. permohonan. Jika perlawanan berjaya, permintaan akan diproses.
Dalam Laravel, anda boleh menggunakan fungsi csrf_field() untuk menjana medan tersembunyi yang mengandungi token CSRF, yang boleh dibenamkan dalam borang. Contohnya:
<form action="/your/url" method="POST"> {{ csrf_field() }} <!-- 其他表单字段 --> </form>
Apabila menggunakan AJAX untuk menghantar permintaan POST, anda boleh menambah medan X-CSRF-Token dalam permintaan header. Mengandungi token CSRF, yang akan disahkan oleh Laravel.
Contohnya:
$.ajaxSetup({ headers: { 'X-CSRF-Token': $('meta[name="_token"]').attr('content') } });
Dalam Laravel, melalui perisian tengah pengesahan CSRF, anda boleh mencipta nilai baharu untuk setiap POST, PUT , PATCH atau DELETE meminta untuk memaksa pengesahan CSRF. Jika permintaan tidak termasuk token CSRF yang betul, permintaan akan ditolak dan kod status HTTP 419 akan dikembalikan.
Untuk mendayakan perisian tengah pengesahan CSRF, cuma tambah perisian tengah CSRF dalam kumpulan perisian tengah.
// app/Http/Kernel.php protected $middlewareGroups = [ 'web' => [ // 其他中间件 IlluminateFoundationHttpMiddlewareVerifyCsrfToken::class, ], // 其他中间件组 ];
Nota: Token CSRF akan berubah dengan setiap permintaan, jadi apabila membuat permintaan Ajax, anda perlu menetapkan semula medan X-CSRF-Token dalam pengepala permintaan, jika tidak pengesahan akan gagal.
Ringkasan
Laravel menyediakan pembangun dengan alatan berkuasa dan langkah keselamatan untuk mencegah serangan CSRF. Dengan menggunakan token CSRF, pengepala X-CSRF-Token dan perisian tengah pengesahan CSRF, serangan CSRF boleh dicegah dengan berkesan dan keselamatan maklumat pengguna dilindungi. Apabila menggunakan Laravel untuk pembangunan web, adalah penting untuk memberi perhatian kepada isu keselamatan dan secara aktif mencari dan menggunakan pelbagai langkah keselamatan untuk memastikan tapak web dan maklumat pengguna tidak diserang dan diancam.
Atas ialah kandungan terperinci Bagaimana untuk mengelakkan csrf dalam laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!