2011-01-19 18 views
9

如果我不在表單中使用csrf標記,我所面臨的風險到底是什麼?我不尋找簡單的標籤或風險名稱,因爲這些可能會讓人困惑。我需要明白攻擊者究竟能做什麼,只有在什麼情況下他們才能用簡單的英語來做到這一點。沒有CSRF標記的表單:有什麼風險

+8

聽起來像有人試圖瞭解更多關於應用程序安全性的內容。 – park 2011-01-19 22:29:38

回答

9

CSRF漏洞是指允許惡意用戶(或網站)讓不知情的用戶在您的網站上執行他們不想發生的操作。

一些真實世界的例子是,如果您允許用戶通過GET而不是POST來刪除帳戶,某人可以在您的網站上發佈以下評論(假設該網站有一些發佈評論或其他輸入的方式,等等)

我想我會在您的網站發表評論。看看這個很酷的圖像!
< IMG SRC =「HTTP://example.com/delete_my_account.php」/>

而現在用戶加載該頁面登錄任何時候,他們的帳戶將被刪除。如果有人做了。如果你使用CSRF令牌,這是不可能的。

另一個例子是,一個外部站點可以製作一個張貼到你網站的表單,並執行一個不需要的操作,假設你的網站有一個不使用CSRF令牌的購物車,惡意網站可以創建一個帶有bu tton表示「點擊此處註冊」,但實際上從您的網站訂購了1000件東西。如果您網站的登錄用戶訪問這個惡意網站並點擊該按鈕,他們會在郵件中獲得驚喜。

顯然還有其他的情況,這些只是一些例子。谷歌搜索應該會顯示大量的文章和教程,其中許多可能會有其他一些例子。 Wikipedia page也有一些你可能會感興趣的例子。

這些示例的主要思想是,某人可以欺騙您的網站執行操作,就好像它來自用戶一樣,但實際上用戶不知道它正在發生或不希望發生。如果您的網站有任何破壞性行爲(即可以從用戶帳戶中刪除內容,註銷用戶等)或關鍵性行爲(即處理金錢),則應該使用CSRF令牌。如果您的網站只是朋友等相冊,那麼您可能不需要打擾CSRF令牌(儘管在您構建需要它們的網站時練習總是很好的)。

除非您添加令牌以確保請求來自表單,而您的網站故意提供給用戶,否則您確實無法知道用戶是否打算執行此操作。

因此,您總是希望在您生成的每個表單上使用唯一標記,並驗證發送到您網站的所有請求都有當前用戶的有效標記。還要確保在一段時間後過期令牌,以便它們不會永遠持續下去。

1

我會建議你閱讀這篇優秀的文章,解釋CSRF是什麼,以及你如何最好地保護自己。

+0

samquo文章解釋說我還是笨蛋:$它有一個小節「Example Exploit」 – Alfred 2011-01-19 05:44:15

相關問題