【发布时间】:2012-02-09 05:24:12
【问题描述】:
我最近一直在为我的网站编写一个 csrf 保护库。
如果不是在 $_SESSION 中生成,我会为每个请求生成一个随机令牌。
一切运行良好,经过测试并且很好 - 但是,想想这种情况:
在我的网站上:
- 用户访问我的网站 (example.com) 并登录。
- 现在他打开了另一个恶意网站。
现在有恶意网站(在 javascript 中):
- 首先运行 http://example.com .. 并使用 javascript(正则表达式或其他)以表单形式在 html 中获取 csrf TOKEN - 说它的“randomToken”。
- 使用 javascript - 现在获取 http://example.com/my-profile/?deletemyaccount=1&token=randomToken
这显然也可以通过 post 完成,而不仅仅是 get。
我曾想过检查 HTTP_REFERER ,但这并不可靠。
关于如何防止这种情况的任何想法?这真的可能吗?在我看来,这种攻击使用 jQuery 应该很容易。
【问题讨论】:
-
非常有可能使用 AJAX。引用者也无济于事,因为任何和所有标头都可能在 AJAX 请求中被操纵。我认为你在这方面不走运。尝试改用 CAPTCHA。
标签: php csrf protection