CSRF攻擊與防御-start
-
什么是CSRF攻擊夹供?
- CSRF是跨站請求偽造(Cross-site request forgery)的英文縮寫。
- 跨站請求偽造是一種通過偽裝授權(quán)用戶的請求來利用授信網(wǎng)站的惡意漏洞筛璧。
-
日常生活中我們應(yīng)當怎樣預(yù)防CSRF攻擊栗菜?
-
Laravel自動為每個用戶Session生成了一個CSRF Token,該Token可用于驗證登錄用戶和發(fā)起請求者是否是同一人判导,如果不是則請求失敗。正是根據(jù)本特性沛硅,Laravel則提供了兩個輔助函數(shù):
{{ csrf_field() }}
輔助函數(shù)和{{csrf_token()}}
輔助函數(shù)眼刃。 -
在我們提交表單的時候,必須要在form 表單里面加入下列中的其中一行代碼稽鞭,使其生成一個隱藏域:
<input type="hidden" name="_token" value="{{csrf_token()}}">
** 或者**
{{csrf_field()}}
這兩個函數(shù)生成的是同一個隱藏域鸟整,表單內(nèi)容如下:
<input type="hidden" name="_token" value="4odLZvJowyNLTSATEbAn67mkua6rwFNIGJZqKlfH">
在每一個POST提交后,都必須要有這個隱藏域朦蕴,這樣就避免了CSRF攻擊篮条。
-
Laravel自動為每個用戶Session生成了一個CSRF Token,該Token可用于驗證登錄用戶和發(fā)起請求者是否是同一人判导,如果不是則請求失敗。正是根據(jù)本特性沛硅,Laravel則提供了兩個輔助函數(shù):
-
從 CSRF 保護中排除指定 URL
-
要實現(xiàn)這一目的,只需要在 **
(app/Http/Middleware/VerifyCsrfToken.php)
中間件中將要排除的 URL 添加到 $except 數(shù)組中即可吩抓。**
-
要實現(xiàn)這一目的,只需要在 **
-
Ajax 設(shè)置CSRF-Token
頁面設(shè)置head中設(shè)置:
<meta name="csrf-token" content="{{ csrf_token() }}">
-
基于 AJAX 的應(yīng)用提供了簡單涉茧、方便的方式來避免 CSRF 攻擊:
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
CSRF攻擊與防御-end