更新:GWT 2.3引入了一個更好的機制來對抗XSRF攻擊。見http://code.google.com/webtoolkit/doc/latest/DevGuideSecurityRpcXsrf.htmlGWT RPC - 它是否足以抵禦CSRF?
GWT公司RPC機制並在每個HTTP請求下面的東西 -
- 設置了兩個自定義請求頭 - X-GWT置換和X-GWT-模塊-基地
- 集內容類型爲text/x-gwt-rpc; charset = utf-8
HTTP請求始終是一個POST,並且在服務器端GET方法拋出異常(方法不支持)。
另外,如果這些標頭沒有設置或者有錯誤的值,服務器將失敗處理,並且可能會出現「可能的CSRF?」異常。或者是這個效果的東西。
問題是:這足以防止CSRF嗎?有沒有一種方法來設置自定義標題和更改純粹的跨站點請求僞造方法中的內容類型?
XmlHttpRequest,Flash和其他一系列技術可以設置自定義瀏覽器標頭 - 但是同源策略將啓用並阻止其他站點發出請求。除非服務器具有寬鬆的crossdomain.xml,或者將Access-Control-Allow-Origin返回到任意網站,請求將如何工作? 這隻會讓我們留下形式/圖像/ iframe等,其中same-origin-policy不適用。但我不知道他們可以設置自定義http標題的方式。 那麼,它是如何脆弱? – 2010-04-09 18:56:24
..是的,我同意令牌基於csrf保護是最好的方式,但我想了解他們的方法的缺陷。 – 2010-04-09 18:57:08
@sri非常好的問題。爲了取消這個漏洞,你必須利用Flash的一個鮮爲人知的特性。我已經發布了2個用來描述我所描述的漏洞,我鼓勵你使用它們。 (如果您至少沒有易受攻擊的軟件,您可以看到POST請求正在發送到另一個域,但由於SOP,腳本無法「看到」響應) – rook 2010-04-09 20:24:31