关于客户端安全,CORS除了颠覆同源策略之外,还会做其他事情吗

With respect to client side security, does CORS do anything other than subvert same-origin-policy?

本文关键字:其他 策略 安全 客户端 CORS 颠覆      更新时间:2023-09-26

(如果没有,它真的能提高客户端的安全性吗?)

我想到的情况是,来自服务器X的脚本使用XHR从服务器Y(支持CORS)获取并运行不受信任的代码。

(显然,评估不受信任的代码是不好的™)

我根本不使用CORS来提高安全性。我使用CORS访问不同域上的已知Web服务,如果没有CORS,我将无法访问该服务。在我看来,这与提高安全性无关,而是允许将一个域的数据委托给另一个域。

CORS不是为了强化安全性,而是为了削弱它(但只有在特定条件下,才能获得服务器的许可)。

如果你想在没有CORS的情况下通过AJAX请求从另一台服务器访问某些内容,那么由于"安全性"(同源策略)的原因,你是不被允许的,这就结束了。有了CORS,另一个服务器就可以允许减少安全屏障。

*除了像JSONP这样的黑客攻击,但这也需要服务器的许可

CORS颠覆了同源策略,但有选择地这样做。例如,银行网站域根本不会设置CORS头(以保持同源完全有效),因为从其他域下载的JavaScript不应该向银行发出AJAX请求(或者他们只允许他们信任的合作伙伴网站)。CDN可能会将Access Control Allow Origin设置为"*",因为它不在乎从另一个域下载的JavaScript是否向CDN发出AJAX请求。