编辑:看起来我对 CSRF 实际上是什么感到有些困惑。我已经改写了这个问题
--
所以我知道有很多关于防止 CSRF 的帖子,但是有很多方法可以绕过常用方法:
CSRF Token - 在表单上设置 CSRF 令牌,分配具有相同数据的 cookie 并在服务器端进行匹配
检查用户代理- 确保所有请求都具有有效用户代理的简单方法。很容易绕过,但仍然是一个简单的检查
基于 IP限制 - 根据请求者的 IP 地址限制请求。
--
但这一切都可以轻松绕过!还有什么办法可以防止这种事情发生?请不要输入验证码。
假设一个 URL 缩短器的示例站点。
- 用户提交请求 -> 返回缩短的 URL。
- 脚本检查有效的引用者(来自原始表单)——很容易被欺骗
- 基于 IP 地址的检查——代理很容易绕过这个
- 检查 CSRF 令牌——垃圾邮件发送者可以通过首先访问原始站点并在对站点的请求中使用设置的 cookie + 令牌来轻松绕过这个
我只是不确定还能做什么?即使是 JavaScript 明智的,可以做些什么来防止这种情况发生?为 cookie 分配超时可能会起作用,但垃圾邮件发送者只会通过访问原始页面重新分配 cookie。
如果请求率高于平均水平,可以做的其他事情是向垃圾邮件发送者显示验证码。但我也想要一些不会标记有效用户的东西。是的,强迫用户必须注册一个帐户可以解决这个问题,但不可行。
谢谢!