2013-09-23 38 views
0

我一直在研究OWASP的建議以防止CSRF攻擊(https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet)。同步器令牌模式:它如何防止XSS和CSRF的組合?

現在,我不明白的是,這將如何防止結合了XSS和CSRF攻擊的攻擊。比方說,我們有以下的攻擊情形:


  1. 攻擊者可以執行存儲XSS攻擊,使得被執行的網站,攻擊者插入腳本每次用戶訪問的頁面。

  2. 該腳本將完全重新設計DOM,例如用戶需要提供一些不相關信息的原始表單,攻擊者的腳本將重新設計它,以便將此表單重新設計爲表單,其中用戶使用管理員特權被添加。請注意,用戶不會看到這一點,因爲這些字段的標籤將保持不變。只有POST會有所不同。

  3. 攻擊者知道該網站使用反CSRF令牌。看看OWASP的建議:'(..)應用程序應該包含一個隱藏的輸入參數,並帶有一個通用名稱,例如「CSRFToken」,攻擊者知道大多數網站都會有一個隱藏字段,並在頁面某處顯示該ID。

  4. 攻擊者確保此字段的值也在僞POST中提交。即使攻擊者不知道此隱藏字段的值,它也可以在POST中指定該值應與請求一起發送。這是可能的,因爲用戶的DOM已被修改,請求將來自用戶的瀏覽器,用戶的Cookie也將隨請求一起發送。

  5. 用戶提交表單,並創建假用戶。


在我看來,這不能僅通過使用CSRF令牌來防止。或者是XSS攻擊已被中和的同步模式的隱含假設?

+0

是不是在OWASP文章中特別提到的文章5.沒有跨站點腳本的惡意? – Erlend

+0

是的,這是正確的。我錯過了那一節。 – Michael

回答

3

或者是XSS攻擊已被中和的同步模式的隱含假設?

是的。如果您的網站以這種方式遭到攻擊,那麼這是一次XSS攻擊,而不是CSRF。 CSRF僅僅意味着請求是「跨站點」,而在你的例子中,請求是在同一個站點上 - 這只是腳本是「跨站點」。