ajax - 设置 Access-Control-Allow-Origin 接受所有域时存在哪些安全风险?

标签 ajax security cors http-headers

我最近不得不将 Access-Control-Allow-Origin 设置为 * 以便能够进行跨子域 AJAX 调用。我觉得这可能是一个安全问题。如果保留该设置,我会面临哪些风险?

最佳答案

通过响应 Access-Control-Allow-Origin: *,所请求的资源允许与每个源共享。这基本上意味着任何网站都可以向您的网站发送 XHR 请求并访问服务器的响应,如果您没有实现此 CORS 响应,情况就不会如此。

因此,任何网站都可以代表其访问者向您的网站发出请求并处理其响应。如果您实现了一些基于浏览器自动提供的内容(cookie、基于 cookie 的 session 等)的身份验证或授权方案等内容,则第三方网站触发的请求也将使用它们。

这确实会带来安全风险,特别是如果您不仅允许所选资源共享资源,还允许每个资源共享资源。在这种情况下,您应该看看 When is it safe to enable CORS?

更新(2020-10-07)

当前Fetch Standard当凭据模式设置为 includeAccess-Control-Allow-Origin 设置为 * 时,将忽略凭据。

因此,如果您使用基于 Cookie 的身份验证,您的凭据将不会根据请求发送。

关于ajax - 设置 Access-Control-Allow-Origin 接受所有域时存在哪些安全风险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12001269/

相关文章:

java - 如何只为一个特殊路径添加过滤器 WebSecurityConfigurerAdapter

jquery - 将数据从node.js附加到现有的html

javascript - Wildfly 允许 OPTIONS 方法但返回 405 不允许方法

jquery - 跨域ajax调用时出现 "Error: jQuery111306513629604596645_1434294948077 was not called"错误?

windows - CryptGetProvParam 和多线程程序

ajax - Joomla JSON.parse : unexpected non-whitespace character after JSON data

android - 移动设备使用 PGP 会不会太过分了?

php - 禁止跨域飞行前选项

javascript - 如果 XMLHttpRequest 对象支持 W3C 进度事件,如何检查 JavaScript?

javascript - 如何在 $.ajax 请求上设置超时并在超时时重做?