维基百科页面中提到了跨站脚本 (XSS)CORS http://en.wikipedia.org/wiki/Cross-origin_resource_sharing。但我不明白它们有什么关系。 CORS 和 XSS 之间有什么联系?
维基百科文章中提到的 XSS 与 JSONP 相关,而不是 CORS。
在 JSONP 中,您引用一个页面,其中包含您想要在页面中包含客户端的数据,如下所示:
<script src="https://example.com/jsonp.aspx?callback=foo"></script>
然后,您的页面上就会有一个 JavaScript 函数,名为foo
将由外部站点调用(example.com
在本例中)传递客户端所需的数据。
然而,如果example.com
受到损害并且正如您所信任的那样example.com
作为脚本源,攻击者可以窃取您的站点并拥有客户端代码。例如,他们可能会将访问者重定向到他们自己的网站,向自己发送访问者的 cookie 或注入 Javascript 键盘记录器,而不是调用您的foo
功能。
不过有了 CORS,如果example.com
设置正确的标头以允许您的站点对其进行 AJAX 调用并检索数据,然后当您应该将数据视为不受信任的输入而不是 HTML,您的网站就不太可能受到损害。它确实取决于数据是什么 - 如果它实际上是预先格式化的 HTML 并且您按原样输出它,那么受损的外部站点仍然可能通过 XSS 影响您的站点 - 但是,JSONP 绝对是这种情况。
另一点是,如果您的网站上存在任何 XSS 错误,那么任何 CORS 限制都会变得无关紧要。攻击网站将能够使用 XSS 漏洞来“绕过”同源政策 http://en.wikipedia.org/wiki/Same-origin_policy在 DOM 级别而不是通过XHR https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest。如果他们需要一些只能通过 AJAX 请求从您的来源检索的信息,他们只需使用 XSS 攻击来注入执行此操作所需的脚本并将其发送回他们自己的域。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)