__RequestVerificationToken的作用是什么?

31
我们有一个.NET C# MVC应用程序,其中包含一些表单,运行良好。现在我们还有一个需要与这些表单交互的ASP经典vbscript页面,但是使用常规的post时,我们会收到一个错误,指出__RequestVerificationToken未设置。
所以我们请求页面,然后将隐藏输入中的令牌和cookie存储在变量中,并发送长时间的POST请求。它确实起作用了。
但是既然如此容易绕过它,它有什么用呢?它几乎没有提供任何保护。
1个回答

33

这是一个防伪标记(防止 CSRF 攻击)。它可以保证发帖人是获得表单的人。

它可以防止任何人伪造链接并让其被授权用户激活。


是的,这将在GET请求上起作用。然后有这些东西很有用,因为它们不能像图像一样隐藏链接。但由于这是POST请求,攻击者无法简单地在表单的某个位置使用链接。他需要JavaScript或一个常规表单来控制。如果他可以访问那个,他也可以代表用户请求令牌并使用它。 - Hugo Delsing
2
通过阅读这篇文章,我们了解到如何使用ValidateAntiForgeryTokenAttribute。但是,在我看来,如果没有身份验证(即授权过滤器),令牌就毫无用处,正如您在帖子中所指出的那样。身份验证可以防止攻击者获取有效的令牌。 - tschmit007
在 CSRF 攻击中,攻击者不需要获取令牌。令牌(以及身份验证 cookie)只在受害者和 Web 服务器之间传输。诡计在于诱使受害者发出 POST 请求(可能看起来像是通过隐藏的表单或 JavaScript 点击链接),并滥用其授权以实现受害者原本不想做的事情。 - R. Schreurs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接