我正在尝试使用Hapi的插件Crumb来实施解决方案,再次进行CSRF攻击,但似乎没有得到解决方案。我可以简单地在每个http响应中将标记设置为cookie。接下来的问题是,如果客户端发出令牌,那么REST如何验证CSRF令牌? REST后端如何理解此随机字符串对该请求有效,而另一个随机字符串无效?
基本思想是,用户应该将令牌与cookie以及邮寄数据一起发送。这是一个简单的例子。如果攻击者诱骗用户向服务发送特定请求,例如恶意网站可能具有带有此链接的图像src="gmail.com/deleteaccount=true"
。如果用户已登录gmail。 Gmail会认为是发出请求的用户,因为与请求一起发送的cookie是有效的。因此,为了确保它实际上是用户,gmail还需要发送带有请求数据的令牌:因此,代替gmail.com/deleteaccount=true
,它需要gmail.com/deleteaccount=true&token=987y23459827345sdfg.
令牌必须与存储在cookie中的令牌匹配。因此,当服务器接收到请求时,它将检查cookie中的令牌是否等于请求主体中的令牌。攻击者无法访问用户的Cookie,也不知道令牌。这是简化的数据流:
更多详细信息如下:
1)用户将GET请求发送到服务器