提升Laravel 9+中AJAX的CSRF令牌管理:最佳實踐
P粉242741921
P粉242741921 2023-08-08 19:46:23
0
1
391

In the context of Laravel 9 , AJAX請求需要暴露CSRF令牌以確保必要的安全措施。然而,不同的令牌放置方法可能會影響程式碼的優雅和組織。主要的兩種方法如下:

方法1:透過Blade語法直接插入CSRF令牌

在這種方法中,CSRF命令牌透過Blade語法直接嵌入JavaScript中。 (在多個地方重複相同的程式碼)


$(document).ready(function() { $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': "{{ csrf_token() }}" } }); }); 

雖然這種方法可以將令牌保持在HTML主體之外,但它需要在JavaScript檔案中使用Blade語法,使關注點的分離變得複雜。

方法2:從元標記中提取CSRF令牌

這種方法涉及將CSRF令牌放置在HTML元標記中,然後提取它以在AJAX設定中使用。


$(document).ready(function() { $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); }); 

在這種方法中,儘管令牌在HTML中暴露出來(無論如何都會暴露),但它簡化了JavaScript檔案的管理,重複使用,並且更容易保持程式碼/關注點的分離。

考慮到上述情況,我猜想方法2更好,因為它更優雅,能夠更好地分離關注點。或者在Laravel中有沒有其他最佳實踐來管理使用AJAX請求時的CSRF令牌放置,以提供更好的安全性和代碼組織的平衡?期待您的見解。

PS:我查看了例如https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html,但其中一些內容超出了我的理解範圍。


P粉242741921
P粉242741921

全部回覆 (1)
P粉988025835

令牌只對你希望擁有它的用戶暴露(這樣他們才能將其發送回給你)。

它不會暴露給任何攻擊者。 (除非他們以某種方式破壞了伺服器和瀏覽器之間的通信,這意味著他們已經獲得比成功的CSRF攻擊更多的存取權限。)

選擇直接的選項。


    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!