2010-09-13 42 views
1

我有一個會顯示敏感信息的網站。我使用反僞造令牌等來防止POSTS中的XSRF。不過,我擔心有人能夠從GET中查看敏感信息。在.NET MVC 2中,保護通過GET發送的只讀數據的建議做法是什麼?XSRF保護GET .net mvc

回答

1

如果您確定GET請求是隻讀的,那麼您無需擔心XSRF。它不可能使用 XSRF竊取來自其他網站的信息,因此您無需通過令牌保護網址。實際上,在URL中使用令牌將使書籤無法使用。

話雖如此,您應該100%確定您的應用程序中沒有XSS漏洞。如果存在,攻擊者不需要爲XSRF和不可預知的令牌而煩惱。

+0

敏感表單提交應該是不可能的書籤 – SinistraD 2010-09-13 16:46:52

+0

如果它的表單提交修改數據,那麼它應該是一個POST,然後重定向到一個GET url。如果表單提交的內容只能作爲一種過濾器,它仍然可以是GET,並且沒有理由犧牲可收藏的網址。 – 2010-09-13 16:55:02

+0

我很擔心以下情況。另一個站點可以運行在XSS上(或者是通過社交工程訪問的惡意站點)。用戶登錄到我的站點並轉到惡意站點,這會向例如accounts/Index發出javascript GET請求,並且現在有一個帳戶列表的副本,他可以將其隱藏回到另一個Web服務器。 – 2010-09-14 07:32:53

0

POST數據的XSRF保護(使用像你說的令牌)也應該對GET數據起作用。從黑客角度來看,GET僞造要比POST僞造容易得多(首先你只發佈一個鏈接,第二個你需要指向隱藏的iframe和自動提交表單的惡意軟件網站),但是如果兩者都失敗,令牌被檢查。

例子: 張貼這樣的鏈接:

是www.domain.tld/page.aspx GET =數據&令牌= token_given_to_hacker

不應返回任何東西,或者僅僅是一個錯誤?對於那些有其他代幣的人。這樣就不會對錯誤的人採取敏感的行動。

這是xsrf,有了這個你不能竊取信息,而是讓其他人提交表單並採取行動,只有黑客知道。例如: 將電子郵件以電子郵件形式更改爲黑客的電子郵件。假設您有一個GET表單,其中包含1個字段:新郵件(爲了簡單起見)。當提交的URL看起來像這樣:

www.domain.tld/[email protected]

現在,如果一個黑客的帖子上的網址您的論壇鏈接:

www.domain.tld/[email protected]

大家誰點擊它,會得到黑客的新的電子郵件。但是,如果您在此處放置了一個令牌,並且每次都會對其進行檢查,則只會對那些在頁面請求中給出相同標記的用戶採取相應操作,在這種情況下,該鏈接僅適用於發佈該令牌的用戶,並沒有其他人。

您還可以使用密碼字段保護敏感表單,如更改電子郵件,密碼等。請注意,驗證碼在這裏幫助不大。