如果应用同源策略,Ajax 请求如何容易受到 CSRF 攻击?

信息安全 Web应用程序 攻击 csrf 阿贾克斯 同源策略
2021-09-03 05:29:16

我对 CSRF 的了解是,恶意网站会欺骗普通用户使用表单向受信任的网站发出请求。

我知道这是可能的,因为我们可以将表单发布到不同的域。但是,我看到 Stackoverflow 的帖子说还应该使用令牌保护 AJAX 请求。

同源策略是否强制将 AJAX 请求仅发布到加载脚本的域?

我听说过跨域资源共享,但如果我的理解是正确的,它需要网络服务器来启用它,所以普通服务器不应该允许这样的请求。

1个回答

请求仍然可以发送,只是不读取

  • 通常允许跨域写入。示例是链接、重定向和表单提交 [原文如此]。
  • 通常不允许跨域读取。

因此,只有响应的读取受到同源策略的保护,而不是请求本身的生成,尽管只有某些标头可以在没有 CORS 的情况下跨源使用。例如,仅允许以下标头:

  • 接受
  • 接受语言
  • 内容-语言
  • 最后事件 ID
  • 内容类型

其他的,例如X-Requested-With是不允许的,因此可以检查自定义标头的存在,以验证请求不是跨源或来自非 AJAX 表单。

请注意,旧版本的 flash 包含一个漏洞,该漏洞允许设置通常受浏览器限制的标头,并且还有另一个漏洞crossdomain.xml允许在没有有效允许请求的情况下进行跨域请求,因此基于令牌的方法可能仍然是防止CSRF最安全的方法。