我目前正在学习更多关于CSRF的知识,我有一个关于cookie的基本问题。来自杰夫·阿特伍德关于CSRF的文章
“当向站点发送POST请求时,只有在表单值和cookie值相同的情况下,该请求才被视为有效。当攻击者代表用户提交表单时,他只能修改表单的值。攻击者不能读取从服务器发送的任何数据,也不能按照相同的来源策略修改cookie值。这意味着,虽然攻击者可以用表单发送他想要的任何值,但他将无法修改或读取存储在该cookie中的值。”
如果cookie是存储在用户计算机上的一段文字,那么如何不修改/读取cookie的值?
如果他们知道cookie的价值,并且能看到隐藏在表单中的伪随机值,难道他们不具备执行攻击所需的一切吗?
谢谢,
发布于 2011-04-21 23:05:26
相同的来源策略意味着攻击网站无法从另一个域读取cookie。请参阅曲奇饼
我们并不是说攻击者在用户的计算机上有rootkit或类似的东西,CSRF保护的是恶意服务器,让用户通过POST请求向恶意服务器要攻击的域提交表单。因为恶意服务器无法从目标域读取cookie,因此它们无法正确地填写所发出的POST请求的CSRF字段。
发布于 2011-04-22 05:30:53
这指的是同步令牌模式。它通常的意思是,表单包含一个隐藏字段,其值是该用户会话的唯一值。相同的值存储在用户机器中的cookie中。当表单提交时,将检查两个值是否匹配。
这种方法的优点是,如果恶意网站试图构建对合法网站的帖子请求,它就不会知道隐藏的表单值。这完全是一个更为复杂的过程。
攻击站点无法读取或操作cookie值,因为它是从另一个域发出的。这里有更多关于这个(包括一个工作示例)的信息:面向.NET开发人员的OWASP前10名第5部分:跨站点请求伪造
https://stackoverflow.com/questions/5750657
复制相似问题