javascript - XHR 请求的 CSRF 预防

标签 javascript ajax cookies xmlhttprequest csrf

我刚刚了解了 CSRF 预防的细节。在我们的应用程序中,所有“写入”请求都是使用 XHR 完成的。整个页面实际上并没有提交任何一个表单,一切都是通过 XHR 完成的。

对于这种情况,维基百科建议 Cookie-to-Header Token .在那里,一些随机值在登录期间(或在其他某个时间点)存储在 cookie 中。当发出 XHR 请求时,此值随后被复制到自定义 http header (例如“X-csrf-token =”),然后由服务器检查。

现在我想知道,在这种情况下是否真的需要随机值。我认为只设置一个自定义 header 就足够了,比如“X-anti-csrf=true”。似乎比拖动随机值稳定得多。但这会带来任何安全问题吗?

最佳答案

这取决于您想做出多少有风险的假设。

  1. 您已经正确配置了 CORS header ,
  2. 并且用户的浏览器尊重他们,
  3. 因此恶意站点无法向您的域发送 XHR,
  4. 这是随请求发送自定义 header 的唯一方法

如果您相信所有这些,那么固定的自定义 header 肯定会起作用。 如果您删除任何假设,那么您的方法就会失败。

如果您使 header 无法猜测,则无需做出这些假设。您仍然依赖于该 header 的值不能被第三方拦截和复制的假设(为此有 TLS)。

关于javascript - XHR 请求的 CSRF 预防,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29249680/

相关文章:

cookies - 如何在 Laravel 中不使用加密的 Cookie?

javascript - Python从没有selenium的javascript设置的网页获取cookie

javascript - 如何在 Sails.js 中保护蓝图访问

javascript - 如何使用ajax在dom中传递变量?

javascript - 选择列表中的汽车,将值插入 cookie - jQuery

php - 在 JQuery 中使用 getJSON 将 cookie 传递到外部域?

jquery - 带有 yadcf 插件的 DataTables - 如何覆盖发送的参数

javascript - PHP 脚本不断以字符串形式返回数值

javascript - 试图从对象中删除错误的属性

javascript - 从 github 上的示例 react js 和引导模式