我使用Spring-MVC和AngularJS来创建我的Web应用程序,但我认为这个问题可以适用于任何技术,因为它更像是一个概念问题,而不是特定的技术问题。
我正在努力理解有关CSRF攻击的一些事情以及在我的Web应用程序上验证用户身份。因此,我有以下问题:
让客户端在Cookie和自定义HTTP标头中生成并发送相同的唯一秘密值。考虑到网站只允许为其自己的域读取/写入Cookie,只有真实站点可以在两个标头中发送相同的值。使用这种方法,您的服务器所要做的就是在每个请求的无状态基础上检查两个值是否相等!
现在,我不明白生成这些秘密值的目的是什么。我的意思是,拥有这两个秘密值并在服务器上进行比较的目的是什么?攻击者不能只在假cookie和http头中放入2个相同的值并仍然提交表单吗?
答案 0 :(得分:1)
现在,我不明白产生这些秘密价值的目的是什么。我的意思是,拥有这两个秘密值并在服务器上进行比较的目的是什么?攻击者是否只能在假cookie和http标头中放入2个相同的值并仍然提交表单?
你是对的,攻击者可以添加HTTP标头,但他只能为自己的域(源)设置一个cookie。浏览器不会将cookie发送到另一个域:
考虑到网站只允许为自己的域读取/写入Cookie,只有真实网站可以在两个标头中发送相同的值。
服务器将只接收来自攻击者的HTTP请求标头,而不是cookie。