asp.net-mvc – 什么是防伪令牌盐的使用?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 什么是防伪令牌盐的使用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在ASP.NET MVC 1.0中,有一个处理跨站点请求伪造安全问题的新功能
<%= Html.AntiForgeryToken() %>
[ValidateAntiForgeryToken]
public ViewResult SubmitUpdate()
{
    // ... etc
}

我发现以html形式生成的令牌每次呈现新的表单时都会保持更改.

我想知道这些令牌是如何生成的?而当使用某些软件扫描本网站时,会报告另一个安全问题:会话固定.为什么?由于令牌保持改变,这个问题怎么来了?

另外还有另一个功能,那就是antiForgeryToken的“salt”,但是我真的知道这是什么用的,即使我们不使用“salt”来生成令牌,令牌会一直改变,所以为什么这样的功能

解决方法

这里有很多关于AntiForgeryToken的信息: http://blog.codeville.net/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/

这是为了防止跨站点请求伪造(CSRF).点击“保存”表单并在服务器上执行某些操作(即保存用户的详细信息)是非常标准的行为.您如何知道用户提交表单是他们声称的用户?在大多数情况下,您将使用一些基于cookie或Windows的认证.

如果攻击者引诱您到一个隐藏的IFRAME中提交完全相同格式的站点,该怎么办?您的Cookie完整提交,服务器看不到与请求合法的请求. (正如gmail发现:http://www.gnucitizen.org/blog/google-gmail-e-mail-hijack-technique/)

防伪令牌通过在每次生成页面时创建一个附加的cookie标记来防止这种形式的攻击.令牌既是表单,也是cookie,如果表单和cookie不匹配,我们就会遇到一个CSRF攻击(攻击者无法使用上述攻击来读取防伪令牌).

从上面的文章,盐做什么呢?

Salt is just an arbitrary string. A different salt value means a different anti-forgery token will be generated. This means that even if an attacker manages to get hold of a valid token somehow,they can’t reuse it in other parts of the application where a different salt value is required.

更新:令牌如何生成?下载source,并查看AntiForgeryDataSerializer,AntiForgeryData类.

猜你在找的asp.Net相关文章