在同步標記模式,我總是看到在一個隱藏字段或URL的CSRF令牌。將它附加到ajax post請求的末尾並讓服務器決定是否需要使用它是否安全?如果這是爲什麼人們不這樣做?CSRF同步令牌
Q
CSRF同步令牌
1
A
回答
0
簡短的回答是,它並沒有多麼您在同步標記模式發送令牌,只要它是不會自動發送瀏覽器請求是否被另一個原點(即製造。它不是在一個cookie )。因此,將它附加到ajax post請求的末尾是很好的(雖然我不太清楚你的意思:))。
在談到沒有Ajax調用傳統的表單應用程序,一個隱藏的表單字段是最便捷的方式。您只需將標記放置在每個表單的隱藏字段中,並且客戶端上沒有任何其他操作可以輕鬆完成。
阿賈克斯改變了風景,AJAX調用不會自動發送令牌,你要自動照顧它。例如,對於jQuery,您可以使用$.ajaxSetup
中的beforeSend
鉤子自動將令牌添加到請求。當請求內容類型爲x-www-form-urlencoded
時,您可以將其添加爲另一個表單變量,當它是一個帶有application/json
的json請求時,可以將其添加爲json值。這將是安全的,但我可以看到兩個問題。
之一是,令牌是一種「元數據」的要求,你的業務邏輯和業務數據的不部分。它也是跨數據結構的一個交叉問題,並不針對查詢。所以最好不要使用數據結構。
另一個問題是,在加入beforeSend
令牌到已經請求池莉構建數據是乏味的。您必須深入研究數據結構,找到/創建令牌的變量等。
將它作爲標記發送會更容易,這是人們在將標記添加到ajax請求時主要執行的操作。添加像X-CSRF-Token
或類似的自定義請求標頭非常常見,然後服務器端可以從那裏驗證令牌。
相關問題
- 1. 笨,CSRF令牌
- 2. Django的CSRF令牌
- 3. 變化CSRF令牌
- 4. CSRF令牌生成
- 5. CSRF 403禁止 - 無效的CSRF令牌
- 6. CalDav同步令牌失效
- 7. Struts同步器令牌
- 8. 需要CSRF令牌嗎?
- 9. CodeIgniter的CSRF令牌問題
- 10. Csrf令牌縮放問題
- 11. 爲window.location.href添加CSRF令牌
- 12. CSRF令牌春季安全
- 13. Angular 2 Spring Security CSRF令牌
- 14. laravel CSRF令牌與枝條
- 15. SYMFONY2 - CSRF令牌無效Allwais
- 16. Django的CSRF令牌丟失
- 17. Spring Security獲得CSRF令牌
- 18. 的CSRF令牌無效
- 19. rails csrf令牌生存期
- 20. PHP中的Laravel csrf令牌
- 21. Symfony2 CSRF令牌無效
- 22. Braintree CSRF令牌丟失
- 23. 反CSRF令牌和Javascript
- 24. Rails的Angular 2 CSRF令牌
- 25. Cookie中的CSRF令牌
- 26. Django csrf令牌使用
- 27. CSRF令牌多種形式
- 28. CSRF不匹配令牌
- 29. 不記名令牌和CSRF
- 30. Symfony - CSRF令牌無效 - FosRestBundle
非常好的解釋!我有一個非傳統的方式來在PHP中完成它。這不是常識,因爲它是我爲我的應用程序專門設計的。我只是想知道是否有任何安全問題,我沒有太多的知識來糾正應用程序的安全問題,以及哪些是明顯或不明顯的缺陷。 –