【问题标题】:What does an Anti Forgery Token check for, and it actually check for? [duplicate]Anti Forgery Token 检查什么,它实际上检查什么? [复制]
【发布时间】:2019-10-31 01:04:45
【问题描述】:

我相信在阅读了其他几个问题后,我对 Anti Forgery Tokens 的理解是不正确的。

我有一些控制器发布操作,它们采用相同的模型,但根据特定逻辑执行不同的操作。

通过在 Chrome 的开发者工具中编辑表单的操作,我能够在我的代码中做一些意想不到的事情。

我猜我现在需要使用ActionName("action") 数据注释来完成我现在需要做的事情,但是,我仍然对令牌提供的保护感到好奇?是否纯粹是为了阻止外部网站发布到表单,但在应用程序内没有实际保护?

【问题讨论】:

  • 是的,CSRF 是一个与你用来实现它的底层技术无关的概念。不同的框架可能会采用不同的策略来准确转移代币,但基本思想是相同的。
  • @Dev X,本文介绍了 ASP.NET Core 中 FormTagHelper 中的防伪令牌。希望对你有帮助blog.vivensas.com/…

标签: asp.net-core model-view-controller antiforgerytoken


【解决方案1】:

防伪令牌用于防止 CSRF(跨站点请求伪造)攻击。就这些。想象一个恶意行为者设置 Facebook 登录页面克隆的场景。它看起来就像 Facebook 登录页面,通过某种方式,他们设法将用户集中到那里(网络钓鱼电子邮件等)。用户输入他们的用户名和密码并点击提交。表单操作设置为转到实际 Facebook 登录页面,因此就用户而言,他们登录并现在按预期访问 Facebook。但是,恶意攻击者在输入凭据时能够访问他们的凭据,现在可以继续窃取他们的 Facebook 帐户。

防伪令牌通过在页面上放置一个令牌来防止这种情况,该令牌必须在发布后与服务器端生成的令牌匹配。第三方无法生成自己匹配的令牌,因此现在任何执行上述操作的尝试都会立即失败。简而言之就是这样。

【讨论】:

  • 你的例子对于 CSRF 来说有点奇怪。如果您有一个网络钓鱼表单并让用户输入他们的凭据,您不需要让该表单操作指向实际的登录页面。您只需直接获取凭据。 – CSRF 更适用于您做某事并且某事实际上发布到您在浏览器中拥有凭据的其他站点上的潜在有害端点的情况。例如。如果右侧的“添加评论”按钮将 POST 到在我的 Facebook 墙上发布帖子的 Facebook 端点。
  • 也许吧。不过,我试图让它保持简单。是的,虽然凭据确实会以任何一种方式公开,但无法实际进行登录至少会向用户发出信号表明某些事情不正确,并可能提示他们意识到错误并更改密码或其他内容.然而,如果你能做到无缝,那么大多数用户都不会注意到。
猜你喜欢
  • 1970-01-01
  • 2019-11-12
  • 2017-12-02
  • 2017-03-01
  • 2015-12-07
  • 2018-12-17
  • 2014-08-13
  • 2017-12-31
相关资源
最近更新 更多