目前我正在开发 ASP .NET MVC 4 应用程序。我们正在使用提供[ValidateAntiForgeryToken]
的和对应@Html.AntiForgeryToken()
的在我们使用 POST 提交的表单中生成隐藏字段。
到目前为止,该机制似乎工作正常,因为如果我没有将令牌作为输入隐藏字段提供给目标,则按[ValidateAntiForgeryToken]
预期会引发带有错误注释的动作。
但是我发现真的很奇怪,如果我使用 Firebug 或 Chrome 检查器捕获了几个生成的令牌,将它们复制到记事本中,然后转到另一个也使用 AntiForgeryToken 的页面,并且基本上用之前生成的任何令牌替换隐藏字段,一个错误没有提出。我期望始终具有 1:1 关系(页面隐藏字段 - ValidationAtServer],因为如果有人能够获得该值,将能够伪造对应用程序中需要 AntiForgeryToken 的任何形式的任何请求
我的印象是,一旦生成了令牌,就不可能重复使用相同的令牌,我认为这是框架本身的安全漏洞。
如果有人可以提供更多见解,将不胜感激。