W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Laravel 提供簡易的方法,讓您可以保護您的應用程序不受到 CSRF (跨網(wǎng)站請求偽造) 攻擊。跨網(wǎng)站請求偽造是一種惡意的攻擊,借以代表經(jīng)過身份驗證的用戶執(zhí)行未經(jīng)授權的命令。
Laravel 會自動在每一位用戶的 session 中放置隨機的 token ,這個 token 將被用來確保經(jīng)過驗證的用戶是實際發(fā)出請求至應用程序的用戶:
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
當然也可以在 Blade 模板引擎使用:
<input type="hidden" name="_token" value="{{ csrf_token() }}">
您不需要手動驗證在 POST、PUT、DELETE 請求的 CSRF token。 VerifyCsrfToken HTTP 中間件將保存在 session 中的請求輸入的 token 配對來驗證 token 。
除了尋找 CSRF token 作為「POST」參數(shù),中間件也檢查 X-XSRF-TOKEN 請求頭,比如,你可以把 token 存放在 meta 標簽中, 然后使用 jQuery 將它加入到所有的請求頭中:
<meta name="csrf-token" content="{{ csrf_token() }}" />
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
現(xiàn)在所有的 AJAX 請求會自動加入 CSRF token:
$.ajax({
url: "/foo/bar",
})
Laravel 也在 cookie 中存放了名為 XSRF-TOKEN 的 CSRF token。你可以使用這個 cookie 值來設置 X-XSRF-TOKEN 請求頭。一些 Javascript 框架,比如 Angular ,會自動設置這個值。
注意: X-CSRF-TOKEN 和 X-XSRF-TOKEN 的不同點在于前者使用的是純文本而后者是一個加密的值,因為在 Laravel 中 cookies 始終是被加密過的。如果你使用 csrf_token() 函數(shù)來作為 token 的值, 你需要設置 X-CSRF-TOKEN 請求頭。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: