【问题标题】:Why XSRF token is not being sent on cross-origin?为什么 XSRF 令牌没有跨域发送?
【发布时间】:2017-10-22 10:35:13
【问题描述】:

这是来自 github 上 Angularjs 1.6.4 中文件 http.js 的 sn-p:

var xsrfValue = urlIsSameOrigin(config.url)
    ? $$cookieReader()[config.xsrfCookieName || defaults.xsrfCookieName]
    : undefined;
if (xsrfValue) {
    reqHeaders[(config.xsrfHeaderName || defaults.xsrfHeaderName)] = xsrfValue;
}

为什么只有当请求是针对同一来源时才包含 XSRF 令牌?如果 Restful 后端与前端位于不同的主机上,那么不应该使用 XSRF 吗?

【问题讨论】:

    标签: angularjs security cross-domain csrf x-xsrf-token


    【解决方案1】:

    在这种情况下,XSRF 保护通过将config.xsrfHeaderName 标头中接收的令牌与作为 cookie config.xsrfCookieName 接收的令牌进行比较来工作(请参阅针对 xsrf 的“双重发布”保护)。无论如何cookie不会被发送到其他来源,所以发送header没有意义。

    在这种情况下,其他来源可能使用的身份验证不依赖于浏览器自动添加到请求中的某些内容(即 cookie),但可能像大多数 API 一样基于令牌。在这种情况下,它不会受到 xsrf 的攻击。

    【讨论】:

      猜你喜欢
      • 2014-09-30
      • 2011-10-21
      • 2016-09-18
      • 2021-11-04
      • 2016-11-19
      • 1970-01-01
      • 2020-01-25
      • 2021-08-13
      • 2020-10-29
      相关资源
      最近更新 更多