当前位置:  开发笔记 > 编程语言 > 正文

什么是防伪标记盐的用途?

如何解决《什么是防伪标记盐的用途?》经验,为你挑选了1个好方法。

在ASP.NET MVC 1.0中,有一个用于处理跨站点请求伪造安全问题的新功能:

 <%= Html.AntiForgeryToken() %>
[ValidateAntiForgeryToken]
public ViewResult SubmitUpdate()
{
    // ... etc
}

我发现每次呈现新表单时,以html格式生成的令牌都会不断变化.

我想知道这些令牌是如何生成的?当使用某些软件扫描此站点时,它将报告另一个安全问题:会话已修复.为什么?由于令牌不断变化,这个问题怎么来了?

还有另外一个功能,就是"盐" antiForgeryToken,但我真的知道这用了什么,即使我们不使用"salt"来生成令牌,令牌也会一直在变化,所以为什么会这样功能?



1> russau..:

关于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只是一个随意的字符串.不同的盐值意味着将生成不同的防伪标记.这意味着即使攻击者设法以某种方式获得有效令牌,他们也无法在需要不同盐值的应用程序的其他部分重用它.

更新:令牌是如何生成的?下载源代码,看看AntiForgeryDataSerializer,AntiForgeryData类.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有