加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – ASP.NET MVC3的AntiForgeryToken有哪些实现细

发布时间:2020-12-16 07:44:09 所属栏目:asp.Net 来源:网络整理
导读:AntiForgeryToken用于防止CSRF攻击,但是MSDN上的链接并没有让我深入了解AntiForgeryToken究竟做了什么,或者它是如何工作的,或者为什么事情按照它们的方式完成. 从我收集的内容中,它在网页和cookie中创建了一个哈希.其中一个或两个使用散列的IPrincipal.Name,
AntiForgeryToken用于防止CSRF攻击,但是MSDN上的链接并没有让我深入了解AntiForgeryToken究竟做了什么,或者它是如何工作的,或者为什么事情按照它们的方式完成.

从我收集的内容中,它在网页和cookie中创建了一个哈希.其中一个或两个使用散列的IPrincipal.Name,并使用对称加密.

任何人都可以阐明:

> AntiForgeryToken如何在内部工作
>应该用什么来保护
>什么不应该用来保护
>上述#1的实施选择背后的原因是什么?

>示例:

>是实施安全的“DoubleSubmit”cookie和其他常见漏洞
>如果用户打开多个选项卡,是否存在实施问题
>什么使MSFT的实现与SANS提供的实现不同

解决方法

好的,这是我最好的一击.

1)在内部,mvc使用RNG加密方法创建一个128位字符串作为XSRF令牌.此字符串存储在cookie中以及表单上某处的隐藏字段中. cookie名称似乎是__RequestVerificationToken形式的应用程序路径(服务器端)的基本64编码版本.其中的html部分使用AntiForgeryDataSerializer来序列化以下数据
???– 盐
??? – 值(标记字符串)
??? – 创建日期的刻度
??? – 用户名(看起来像Context.User)

validate方法基本上反序列化cookie和表单中的值,并根据值(salt / value / ticks / username)对它们进行比较.

2/3)我认为这个讨论更多的是关于何时使用XSRF令牌以及何时不使用XSRF令牌.在我看来,你应该在每个表格上使用它(我的意思是为什么不).我唯一可以想到的是,如果您确实遇到了问题与否,那么这是不能保护的.知道应用名称的base64编码将允许攻击者能够在XSRF攻击期间查看cookie.也许我对此的解释是不正确的.

4)不确定你到底在找什么?我想我会建立一种机制,我会尝试在会话中存储XSRF令牌(如果已经可用),如果没有,那么尝试cookie方法.至于使用的加密类型,我发现了这个SO artcile.
Pros and cons of RNGCryptoServiceProvider

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读