【发布时间】:2015-04-30 02:51:08
【问题描述】:
我花了一些时间了解Cross-Origin-Resource-Sharing 的工作原理,我无法相信它怎么会设计得如此不安全。
当托管在foo.com 上的网站想要通过ajax 请求存储在bar.com 的资源时,浏览器会询问bar.com 是否允许该请求。
仅当bar.com 明确允许来自foo.com 的异步请求(通过Access-Control-Allow-Origin 响应标头)时,资源才会交付给客户端。
如果应该读取数据,这不是安全问题。但是如果数据被发送到请求的服务器,它就是。
过去,如果黑客成功在网站中插入 JavaScript 代码以窃取 cookie 数据或其他信息,Same-Origin-Policy 防止他可以将信息直接发送到自己的服务器。
但多亏了 CORS,黑客只需启用任何来源即可将被盗信息直接发送到自己的服务器。
我知道,CORS 仍在开发中,但几乎所有主流浏览器都已支持。那么,为什么 CORS 会这样设计呢?如果请求源服务器发送 ajax 请求的权限,这不是更安全吗?
在我看来,这是对安全性的降低。或者不是吗? 我发现的所有与 CORS 相关的“已知问题”都与请求服务器上的弱配置有关。
【问题讨论】:
-
我认为这不是此类问题的正确资源,请尝试security.stackexchange.com
标签: javascript cross-domain cors same-origin-policy