我只是想澄清一下我对Rails中CSRF攻击的理解。
假设我们有一位用户Peter已登录 mainsite.com 。当他遇到一个类似按钮时,就像#34;一个页面(作为表单实现),然后 Rails生成一个auth-token,存储在会话(服务器端)中,并存储在表单本身。彼得按"喜欢",一切正常,因为令牌匹配。
现在彼得仍然登录到mainsite.com,前往 evilsite.com 并遇到一个表格(彼得不知道)实际上向mainsite.com/deleteAccount发送请求以删除Peter& #39;帐户。当Peter遇到这种形式时,没有auth-token ,因此它与存储在Rails中的auth-token不匹配。即使有一个隐藏的表单来生成一个auth-token,新令牌(希望)与已经存储在Rails中的令牌有所不同。
我的知识是否有任何错误?我想知道我的理解是否存在任何差距,或者我可以做些什么来提高我对CSRF攻击的理解?谢谢!
答案 0 :(得分:1)
Rails guides on CSRF很好地涵盖了这一点。除了:
之外,你对它的运作方式非常正确即使有一个隐藏的表单来生成一个auth-token,新的令牌(希望)也会与已经存储在Rails中的令牌不同。
导轨指南指定:
请注意,跨站点脚本(XSS)漏洞会绕过所有CSRF保护。 XSS使攻击者能够访问页面上的所有元素,因此他们可以从表单中读取CSRF安全令牌或直接提交表单。
所以基本上,只要请求来自页面的有效auth-token,默认保护就没有用。