搜尋
首頁php教程PHP开发Yii2.0防禦csrf攻擊方法

Yii2.0防禦csrf攻擊方法

Jan 03, 2017 am 09:46 AM

yii2中無論是用測試工具POSTMAN、用命令列CURL請求、ajax請求總是會得到http400:Bad Request的錯誤;而如果用Web網頁方式GET訪問(去除verbFilter的POST限制),是正常的

透過查閱資料發現,這是CRSF驗證的原因

原理:

Cookie Hashing, 讓伺服器發送給客戶端的所有表單中都標示一個隨機值_csrf,並同時在客戶端的COOKIE中保存一個相關聯的token ;

驗證的時候,服務端每次對接收到的請求_POST()過來的一個input hidden _csrf跟客戶端的COOKIE中的token進行對照驗證

攻擊者攻擊的原理是利用了客戶端的COOKIE,但是攻擊者是得不到COOKIE具體的內容的,他只是利用(這裡拋開XSS攻擊的可能性,由於用戶的Cookie很容易由於網站的XSS漏洞而被盜取,這就另外的1%。一般的攻擊者看到有需要算Hash值,基本上都會放棄了);所以攻擊者沒法在攻擊URL中加入token,這樣就無法通過驗證。

這可能是最簡單的解決方案了,因為攻擊者不能獲得第三方的Cookie(理論上),所以表單中的資料也就建構失敗了

解決方案:

1.禁用CRSF验证(不推荐):'enableCsrfValidation' => false,

'components' => [
'request' => [
'cookieValidationKey' => '83r5HbITBiMfmiYPOZFdL-raVp4O1VV4',
'enableCookieValidation' => false,
'enableCsrfValidation' => false,
]

2.資料提交時,攜帶csrf 資訊

a.呼叫元件ActiveForm時,提交資料會自動帶上_csrf

b.ajax提交時可以在頭部取得到csrf資訊(如下圖),與要提交的資料一併提交即可

Yii2.0防禦csrf攻擊方法

c.也可以透過php取得csrf資訊

Yii::$app->request->csrfParam;(获取csrf-param)
Yii::$app->request->csrfToken;(获取csrf-token)

以上就是Yii2.0防禦csrf攻擊方法的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境