【发布时间】:2014-10-29 00:01:53
【问题描述】:
我想知道 ASP.NET 如何检查防伪令牌是否有效?比如 ASP.NET 将这些令牌存储在哪里?它们是如何存储的?
【问题讨论】:
-
这在 .NET 5.0 中进行了解释:levelup.gitconnected.com/…
标签: asp.net security xss antiforgerytoken
我想知道 ASP.NET 如何检查防伪令牌是否有效?比如 ASP.NET 将这些令牌存储在哪里?它们是如何存储的?
【问题讨论】:
标签: asp.net security xss antiforgerytoken
简短的版本是生成的令牌存储在 2 个位置:(a) cookie (b) 隐藏的表单值。提交表单时,将这两个值相互比较以确定它们是否有效。进一步阅读:
http://www.asp.net/web-api/overview/security/preventing-cross-site-request-forgery-(csrf)-attacks http://www.codeproject.com/Articles/793384/ASP-NET-Anti-Forgery-Tokens-internals
【讨论】:
比接受的答案更清楚的逐步解释恕我直言(来自https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/preventing-cross-site-request-forgery-csrf-attacks)
【讨论】:
上面的描述还不是全部,在 AjaxRequest 防伪的情况下,特别是在 get 请求中,通常不会发送带有隐藏值的 Form 进行比较,而是需要设置一个相同的 header 值通过 javascript 获取 cookie 的内容。默认情况下,您应该设置的标头名称是 X-XRF-Token 标头 [与 angularjs 相关] ...当然,您需要禁用 CORS 或仅对特定域启用它以保护API,SAMEORIGIN 也需要设置,避免点击劫持..
【讨论】: