REST /无状态:CSRF攻击并记住登录用户

时间:2015-11-28 20:59:43

标签: angularjs web-services rest spring-mvc csrf

我使用Spring-MVC和AngularJS来创建我的Web应用程序,但我认为这个问题可以适用于任何技术,因为它更像是一个概念问题,而不是特定的技术问题。

我正在努力理解有关CSRF攻击的一些事情以及在我的Web应用程序上验证用户身份。因此,我有以下问题:

  • 对于CSRF攻击,我阅读this网站,其中说明了以下内容:
  

让客户端在Cookie和自定义HTTP标头中生成并发送相同的唯一秘密值。考虑到网站只允许为其自己的域读取/写入Cookie,只有真实站点可以在两个标头中发送相同的值。使用这种方法,您的服务器所要做的就是在每个请求的无状态基础上检查两个值是否相等!

现在,我不明白生成这些秘密值的目的是什么。我的意思是,拥有这两个秘密值并在服务器上进行比较的目的是什么?攻击者不能只在假cookie和http头中放入2个相同的值并仍然提交表单吗?

  • 根据我的理解,REST是无状态的,因此服务器不会跟踪服务器上的任何会话。在这种情况下,我假设用户应该再次在每个请求上传递一个秘密值,让服务器现在是他?但是服务器应该如何处理这个秘密值呢?它应该保存在数据库中吗?

1 个答案:

答案 0 :(得分:1)

  

现在,我不明白产生这些秘密价值的目的是什么。我的意思是,拥有这两个秘密值并在服务器上进行比较的目的是什么?攻击者是否只能在假cookie和http标头中放入2个相同的值并仍然提交表单?

你是对的,攻击者可以添加HTTP标头,但他只能为自己的域(源)设置一个cookie。浏览器不会将cookie发送到另一个域:

  

考虑到网站只允许为自己的域读取/写入Cookie,只有真实网站可以在两个标头中发送相同的值。

服务器将只接收来自攻击者的HTTP请求标头,而不是cookie。

相关问题