3 回答

TA貢獻2003條經驗 獲得超2個贊
安全性的一個很好的理由 - 這可以防止CSRF攻擊,因為未經服務器通過CORS同意,此標頭無法添加到AJAX請求跨域。
跨域只允許以下標頭:
接受
接受語言
內容語言
最后,事件ID
內容類型
任何其他人導致在CORS支持的瀏覽器中發出“飛行前”請求。
如果沒有CORS,則無法添加X-Requested-With
跨域XHR請求。
如果服務器正在檢查此標頭是否存在,則它知道該請求未從攻擊者的域嘗試使用JavaScript代表該用戶發出請求。這還會檢查請求是否未從常規HTML表單發布,如果不使用令牌,則很難驗證它是否為跨域。(但是,檢查Origin
標題可能是支持的瀏覽器中的一個選項,但是您將使舊瀏覽器容易受到攻擊。)
發現了新的Flash旁路
您可能希望將其與令牌結合使用,因為如果存在重定向步驟,則 OSX上的Safari上運行的Flash 可以設置此標頭。它似乎也適用于Chrome,但現在已經過修復。此處有更多詳細信息,包括受影
OWASP推薦將其與Origin和Referer檢查相結合:
這種防御技術在跨站請求偽造的魯棒防御部分4.3中有具體討論。然而,早在2008年就已經記錄了使用Flash的這種防御的繞過,并且最近在2015年由Mathias Karlsson在Vimeo中利用了CSRF漏洞。但是,我們認為Flash攻擊無法欺騙Origin或Referer標頭,因此通過檢查它們,我們相信這種檢查組合應該可以阻止Flash繞過CSRF攻擊。(注意:如果有人可以確認或反駁這一信念,請告訴我們,以便我們更新此文章)
但是,由于已經討論過的原因,檢查Origin可能很棘手。
更新
寫了一篇關于CORS,CSRF和X-Requested的更深入的博客文章- 在這里。
- 3 回答
- 0 關注
- 761 瀏覽
相關問題推薦
添加回答
舉報