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