2010-09-27 46 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