2010-09-27 19 views
23

有人可以證實這一點:我是否需要在提交表單中提供CSRF標記和Captcha,或者兩個或多個服務於相同的功能(一個可以用來代替另一個)?是否都需要csrf標記和驗證碼?

+0

這是一個很好的問題,它取決於CSRF的基本原理。 – rook 2010-10-19 19:07:22

回答

21

驗證碼可以用來代替CSRF令牌。這包括在OWASP CSRF Prevention Guide。驗證碼被認爲是CSRF預防的一種更強的形式,因爲它不能被XSS繞過。

+0

+1。如果您沒有在表單上顯示Captch圖像(例如,如果您讓登錄用戶提交而不要求驗證碼),則只需** ** CSRF標記... – ircmaxell 2010-09-27 18:48:29

+0

@ircmaxell好的,我以爲是默示。 – rook 2010-09-27 18:54:26

+0

好的信息,感謝所有回答和評論的人。 – jblue 2010-09-27 21:09:47

0

是的,我錯了。驗證碼和令牌都是會話綁定的。

但是我仍然沒有看到這個問題。
您不能在網站上的每個表單中使用CAPTCHA。它會讓用戶瘋狂和離開。
因此,爲什麼不爲默認的每個表單設置一個標記,併爲選定的標記設置CAPTCHA?

+2

要求交互式用戶輸入防止XSRF;因爲驗證碼需要交互式用戶輸入,所以它們可以用來防止XSRF,就像令牌一樣。 – erickson 2010-09-27 18:52:15