CSRF merujuk kepada serangan Pemalsuan Rentas Tapak pada aplikasi web. Serangan CSRF ialah aktiviti yang tidak dibenarkan yang dilakukan oleh pengguna sistem yang disahkan. Oleh itu, banyak aplikasi web terdedah kepada serangan ini.
Laravel menawarkan perlindungan CSRF dengan cara berikut −
Laravel menyertakan pemalam CSRF terbina dalam, yang menjana token untuk setiap sesi pengguna aktif. Token ini mengesahkan bahawa operasi atau permintaan dihantar oleh pengguna disahkan yang berkenaan.
Pelaksanaan perlindungan CSRF dalam Laravel dibincangkan secara terperinci dalam bahagian ini. Perkara berikut perlu diperhatikan sebelum meneruskan dengan lebih lanjut mengenai perlindungan CSRF −
CSRF dilaksanakan dalam borang HTML yang diisytiharkan dalam aplikasi web. Anda perlu memasukkan token CSRF yang disahkan tersembunyi dalam borang, supaya perisian tengah perlindungan CSRF Laravel boleh mengesahkan permintaan tersebut. Sintaks ditunjukkan di bawah −
<form method = "POST" action="/profile"> {{ csrf_field() }} ... </form>
Anda boleh membina aplikasi dipacu JavaScript dengan mudah menggunakan perpustakaan HTTP JavaScript, kerana ini termasuk token CSRF untuk setiap permintaan keluar.
Fail iaitu resources/assets/js/bootstrap.js semua mendaftar token untuk aplikasi Laravel dan termasuk meta tag yang menyimpan csrf-token dengan Axios HTTP library.
Pertimbangkan baris kod berikut. Mereka menunjukkan borang yang mengambil dua parameter sebagai input: e-mel dan mesej.
<borang><form><br/> <label> Email </label><br/> <input type = "text" name = "email"/><br/> <br/><br/> <label> Message </label> <input type="text" name = "message"/><br/> <input type = ”submit” name = ”submitButton” value = ”submit”><br/></form></borang>
Hasil kod di atas ialah borang yang ditunjukkan di bawah yang boleh dilihat oleh pengguna akhir −
Borang yang ditunjukkan di atas akan menerima sebarang maklumat input daripada pengguna yang dibenarkan. Ini boleh menyebabkan aplikasi web terdedah kepada pelbagai serangan.
Sila ambil perhatian bahawa butang hantar termasuk fungsi dalam bahagian pengawal. Fungsi postContact digunakan dalam pengawal untuk paparan yang berkaitan itu. Ia ditunjukkan di bawah −
public function postContact(Request $request) { return $request-> all(); }
Perhatikan bahawa borang tidak termasuk sebarang token CSRF jadi maklumat sensitif yang dikongsi sebagai parameter input terdedah kepada pelbagai serangan.
Barisan kod berikut menunjukkan kepada anda borang yang direka bentuk semula menggunakan token CSRF −
<kaedah borang="”siaran”"><form method = ”post” ><br/> {{ csrf_field() }}<br/> <label> Email </label><br/> <input type = "text" name = "email"/><br/> <br/><br/> <label> Message </label><br/> <input type = "text" name = "message"/><br/> <input type = ”submit” name = ”submitButton” value = ”submit”><br/></form></kaedah>
Output yang dicapai akan mengembalikan JSON dengan token seperti yang diberikan di bawah −
{ "token": "ghfleixxDSUYEW9WE67877CXNVFJKL", "name": "TutorialsPoint", "e-mel": "contact@tutorialspoint.com" }
Ini ialah token CSRF yang dibuat dengan mengklik butang hantar.
Atas ialah kandungan terperinci Laravel - Perlindungan CSRF. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!