繁体   English   中英

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

[英]REST/stateless: CSRF attacks and remembering logged in user

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

我正在努力了解有关CSRF攻击的一些知识,并在我的Web应用程序上对用户进行身份验证。 因此,我有以下问题:

  • 对于CSRF攻击,我阅读了网站,其中指出:

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM