Meningkatkan Pengurusan Token CSRF untuk AJAX dalam Laravel 9+: Amalan Terbaik
<p>Dalam konteks Laravel 9+, permintaan AJAX perlu mendedahkan token CSRF untuk memastikan langkah keselamatan yang diperlukan. Walau bagaimanapun, kaedah peletakan token yang berbeza mungkin menjejaskan keanggunan dan organisasi kod anda. Dua kaedah utama adalah seperti berikut:<br /><br />Kaedah 1: Masukkan terus token CSRF melalui sintaks Blade<br /><br />Dalam kaedah ini, Kad token CSRF dibenamkan terus ke dalam JavaScript melalui sintaks Blade. (Mengulangi kod yang sama di beberapa tempat)</p><p><br /></p>
<pre class="brush:js;toolbar:false;">$(document).ready(function() {
$.ajaxSetup({
tajuk: {
'X-CSRF-TOKEN': "{{ csrf_token() }}"
}
});
});
</pra>
<p>Walaupun pendekatan ini mengekalkan token di luar kandungan HTML, ia memerlukan penggunaan sintaks Blade dalam fail JavaScript, merumitkan pengasingan kebimbangan. <br /><br />Kaedah 2: Ekstrak token CSRF daripada meta tag<br /><br />Kaedah ini melibatkan meletakkan token CSRF dalam tag meta HTML, Kemudian ekstrak untuk digunakan dalam persediaan AJAX. </p><p><br /></p>
<p><kod><meta name="csrf-token" content="{{ csrf_token() }}"> </code></p>
<pre class="brush:js;toolbar:false;">$(document).ready(function() {
$.ajaxSetup({
tajuk: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
</pra>
<p>Dalam pendekatan ini, walaupun token didedahkan dalam HTML (yang akan didedahkan juga), ia memudahkan pengurusan fail JavaScript, menggunakan semula dan memudahkan untuk memisahkan kod/kebimbangan. <br /><br />Memandangkan perkara di atas, saya rasa pendekatan 2 adalah lebih baik kerana ia lebih elegan dan menyediakan pengasingan kebimbangan yang lebih baik. Atau adakah terdapat amalan terbaik lain dalam Laravel untuk mengurus penempatan token CSRF apabila menggunakan permintaan AJAX untuk menyediakan keseimbangan keselamatan dan organisasi kod yang lebih baik? Mengharapkan pandangan anda. <br /><br />PS: Saya melihat contohnya https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html tetapi sebahagian daripadanya di luar pemahaman saya. </p><p><br /></p>