CORS和XSS有什么联系吗?

smw*_*dia 9 security xss cors web

CORS的Wikipedia页面中提到了跨站点脚本(XSS).但我不知道它们是如何相关的.CORS和XSS之间有什么联系?

Sil*_*Fox 8

关于JSONP的维基百科文章中提到了XSS,而不是CORS.

在JSONP中,您引用包含要在页面中包含客户端的数据的页面,如下所示:

<script src="https://example.com/jsonp.aspx?callback=foo"></script>
Run Code Online (Sandbox Code Playgroud)

然后,您的页面上有一个JavaScript函数,该函数foo将被外部站点调用(example.com在本例中),以传递客户端所需的数据.

但是,如果example.com受到攻击并且您信任example.com脚本源,则攻击者可以使用它来拥有您的站点并拥有客户端代码.例如,他们可能会将访问者重定向到他们自己的网站,向访问者发送访问者的cookie或注入Javascript键盘记录器,而不是调用您的foo功能.

但是使用CORS,如果example.com设置了正确的标题以允许您的站点对其进行AJAX调用并检索数据,那么您应该将数据视为未经编辑的输入而不是HTML,这样您的站点就不太可能遭受损害.它确实取决于数据是什么 - 如果它实际上是预先格式化的HTML并且你按原样输出它然后受到破坏的外部站点仍然可以通过XSS影响你的 - 但是,这绝对是JSONP的情况.

另一点是,如果您的站点上存在任何XSS错误,则会使任何CORS限制无关紧要.攻击网站将能够使用XSS vuln 在DOM级别"绕过"同源策略而不是通过XHR.如果他们需要一些只能通过AJAX请求从您的来源检索的信息,他们只需使用XSS攻击来注入执行此操作所需的脚本并将其发送回自己的域.


小智 1

例如:您可以将允许您窃取用户cookie的js代码注入到某些页面(xss)中。借助 CORS,您可以做到这一点。

希望我没有说谎。也许有人会给你更好的答案。