我最近为我的网站编写了一个csrf保护库。
如果没有在$ _SESSION中生成,我会为每个请求生成一个随机令牌。
一切运作良好,经过测试且很好 - 但是,请考虑这种情况:
在我的网站:
- 用户访问我的网站(example.com)并登录。
- 现在他打开了另一个恶意网站。
醇>
恶意网站现在(使用javascript):
- 首先运行http://example.com ..并使用javascript(regexp或其他)在表单中的html中获取csrf TOKEN - 比如说“randomToken”。
- 使用javascript - 现在获取http://example.com/my-profile/?deletemyaccount=1&token=randomToken
醇>
这显然可以用帖子完成,而不仅仅是获取。
我想过检查HTTP_REFERER,但那是不可靠的。
有关如何保护这一点的任何想法?这真的有可能吗?在我看来,使用jQuery这种攻击应该很容易。