ASP.Net mvc 中的 CSRF 和 ValidateAntiForgeryToken?

CSRF and ValidateAntiForgeryToken in ASP.Net mvc?

我刚刚使用 ASP.NET MVC 实现了一个示例,它使用 [ValidateAntiForgeryToken] 属性来防止 CSRF 攻击。

为了验证它,我制作了 HTML 部分,以便从另一个应用程序发出相同的 post 请求。基本上,如果我将带有令牌加密值的隐藏字段添加到此第三方应用程序,我会获得成功 post request.So 如果我能看到隐藏的,我在 [ValidateAntiForgeryToken] 中找不到任何意义仅通过检查原始表单下的 html 源来获取值。有人能告诉我它的真正意义是什么吗?

另一方面,根据我之前示例的结果,我想知道在应用程序上拥有有效凭据的恶意用户是否可以获取自己的令牌并使用它来发出 post 请求代表其他用户,并执行 CSRF 攻击,?

是的 你的表演方式是可能的。但是您可以通过添加包含代理信息的其他 hidden/encrypted 字段来扩展防伪令牌的当前实现来扩展保护。

以下示例让您了解如何创建自定义 AntiForgery Token

http://techbrij.com/angularjs-antiforgerytoken-asp-net-mvc

Could someone give me an idea about what the real sense of it?

除了 CSRF 攻击的潜在受害者之外,没有人可以读取令牌。 Same Origin Policy 阻止另一个站点从用户会话中读取令牌。无需向令牌添加任何其他内容,只要令牌以安全方式生成并且对于浏览器会话是唯一的。

On the other hand, base on the results of my previous example, I wonder if Could a malicious user with a valid credentials on the application get his own token and use it for making a post request on behalf of other user, and execute a CSRF attack, ?

每个用户会话的令牌应该是唯一的。如果 Bob 在 evil.example.com 上设置 CSRF 攻击并让 Alice 在登录 bank.example.org 的同时访问他的站点并发送他自己的反 CSRF 令牌,应用程序应该拒绝该令牌,因为它与 Alice 的会话不匹配。

(它还应该将此记录为安全事件。)