AntiForgeryToken 与验证码

信息安全 验证码
2021-09-04 11:27:22

我有一些关于captcha和的问题AntiForgeryToken

  1. captcha如果我AntiForgeryToken 在 MVC 应用程序中使用,是否需要使用。
  2. 是否会AntiForgeryToken阻止自动提交表单?
  3. 我可以AntiForgeryToken用作替代品captcha吗?
3个回答

更明确地回答:

如果我在 MVC 应用程序中使用 AntiForgeryToken,是否需要使用验证码。

如果自动提交是一个问题,那么是的。

AntiForgeryToken 是否会阻止自动提交表单?

不会。CSRF 令牌基本上可以确保用户在另一项操作发生之前访问页面(例如包含表单的页面)(例如,提交该表单)。机器人可以轻松获取有效令牌来提交表单。

我可以使用 AntiForgeryToken 作为验证码的替代品吗?

不可以。可以说 CAPTCHA 可能能够替换 CSRF 令牌,但 CAPTCHA 可能不适用于需要 CSRF 保护的每个表单(例如,管理面板中的一个)。

如果我在 MVC 应用程序中使用 AntiForgeryToken,是否需要使用验证码?

CAPTCHA 是一种质询-响应测试,用于计算以确定用户是否为人类。(...) 验证码用于防止机器人使用各种类型的计算服务或收集某些类型的敏感信息。-维基百科

跨站点请求伪造 (CSRF) 是一种攻击类型,当恶意网站、电子邮件、博客、即时消息或程序导致用户的 Web 浏览器在用户当前所在的受信任站点上执行不需要的操作时,就会发生这种攻击认证。- OWASP

正如您所读到的,它们都是完全不同的安全方面。如果实施不当(浏览器可用性问题、难以解决的验证码等),验证码和 CSRF 预防都可能对用户体验不利。

话虽如此,我想我已经回答了你所有的问题。我建议您查看我链接到的来源。它将消除大多数(如果不是)您可能对这个主题提出的所有(进一步)问题。

答案如下: 1. 是 2. 否 3. 否

验证码确实覆盖了丢失的 csrf 令牌,但它不能反过来工作,所以无论您需要防止自动化,请使用验证码