【发布时间】:2013-10-19 19:39:30
【问题描述】:
据说不是将所有域都添加到CORS,而是应该只添加一组域。 然而,添加一组域有时并非易事。例如。如果我想公开一个 API,那么对于每个想要调用该 API 的域,都需要联系我以将该域添加到允许的域列表中。
我想在安全隐患和减少工作量之间做出有意识的权衡决定。
我看到的唯一安全问题是DoS attacks 和CSRF 攻击。 CSRF 攻击已经可以通过 IMG 元素和 FORM 元素实现。 与 CORS 相关的 DoS 攻击可以通过阻止对引用标头的请求来克服。
我是否遗漏了安全隐患?
===编辑===
- 假设
Access-Control-Allow-CredentialsHeader没有设置 - 我知道如何添加给定的域“CORS 访问”列表,因此我只对添加所有域“CORS 访问”的安全影响感兴趣
【问题讨论】:
-
您已经可以使用 img 标签或 iframe ping url,CORS 只是让 ajax 获取 url。
-
您的编辑极大地改变了含义。通过不允许任何经过身份验证的请求,这意味着您希望通过 CORS 公开的端点必然仅限于“公共”功能。这样的端点很可能根本不会受到 Access-Control-Allow-Origin: * 的影响,主要是因为你不能对公共端点进行 CSRF 攻击。
-
我认为
Access-Control-Allow-Origin: *和Access-Control-Allow-Credentials: true一起使用是不可能的,请参阅developer.mozilla.org/en-US/docs/Web/HTTP/… 和w3.org/TR/cors/#resource-requests
标签: javascript html security cors denial-of-service