這是因爲沒有什麼能夠阻止從發佈數據到合法網站的違規網站,這可能包括您的身份驗證票證和您的CSRF令牌。想象一下這種情況......取自ASP.NET
- 用戶使用表單身份驗證登錄到www.siteA.com。
- 服務器驗證用戶。來自服務器的響應包含身份驗證Cookie。
如果不註銷,用戶將訪問惡意網站。該惡意網站包含以下HTML表格:
<h1>You Are a Winner!</h1>
<form action="http://siteA.com/api/account" method="post">
<input type="hidden" name="Transaction" value="withdraw" />
<input type="hidden" name="Amount" value="1000000" />
<input type="submit" value="Click Me"/>
</form>
注意,表單操作崗位的漏洞的網站,而不是惡意網站。這是CSRF的「跨站點」部分。
用戶點擊提交按鈕。瀏覽器在請求中包含身份驗證Cookie。 請求使用用戶的認證上下文在服務器上運行,並且可以執行認證用戶被允許執行的任何操作。
所以基本上,當siteA.com收到CSRF攻擊時,它應該匹配Cookie中的CSRF標記與元標記中的CSRF標記。合法請求將包括兩種情況,但是,僞造攻擊只會包含Cookie中指定的CSRF令牌。
來源
2014-01-31 06:21:30
Leo
'www.evil.com'應該無法獲得即使SOP被禁用**,也就是來自「www.example.com」的用戶的確切標記**(即來自'www.evil.com'的請求是一個單獨的會話,因此應該生成新的標記)。 – rakeen
如果使用瀏覽器的相同實例(當然是使用隱身或隱私瀏覽模式),這是相同的會話。 – SilverlightFox
「www.example.com」如何知道它是否是同一會話? 來自'www.evil.com'的請求沒有任何標記。 – rakeen