CORS的维基百科页面中提到了跨站点脚本(XSS)。但我不知道它们是如何相关的。 CORS和XSS之间的联系是什么?
答案 0 :(得分:7)
关于JSONP的维基百科文章中提到了XSS,而不是CORS。
在JSONP中,您引用一个页面,其中包含您希望在页面中包含客户端的数据,如下所示:
<script src="https://example.com/jsonp.aspx?callback=foo"></script>
然后,您的页面上有一个名为foo
的JavaScript函数,该函数将由外部站点(在本例中为example.com
)调用,以传递客户端所需的数据。
但是,如果example.com
遭到入侵,并且您信任example.com
作为脚本来源,则攻击者可以使用您的网站并拥有客户端代码。例如,他们可能会将访问者重定向到他们自己的网站,将自己的访问者发送给自己的访问者。 cookie或注入Javascript键盘记录器而不是调用foo
函数。
但是使用CORS,如果example.com
设置了正确的标题以允许您的站点对其进行AJAX调用并检索数据,那么应该将数据视为未经输入的输入而不是HTML,您的网站不太可能被破坏。它取决于数据是什么 - 如果它实际上是预先格式化的HTML并且你按原样输出它然后一个受损的外部站点仍然可以通过XSS影响你的 - 但是,这肯定是JSONP的情况。
另一点是,如果您的网站上存在任何XSS错误,则会使任何CORS限制无关紧要。攻击网站将能够使用XSS vuln来绕过&#34;绕过&#34; DOM级别的Same Origin Policy而不是XHR。如果他们需要一些只能通过AJAX请求从您的来源检索的信息,他们只需使用XSS攻击来注入执行此操作所需的脚本并将其发送回自己的域。
答案 1 :(得分:3)
https://www.e-systems.tech/documents/20143/30947/main.pdf
是的,他们联系非常紧密。当我遇到这个没有答案的帖子时,我正在研究这个问题。基本上,它不应该是小的,简单的和公共内容的问题。
但是,随着通过CORS的集成在更多交互式和复杂的应用程序中的增加,XSS可以在易受攻击的系统上使用来攻击我们的系统。例如,通过XSS传播自身的蠕虫可以将易受攻击的系统用作传递机制,但是,它的目标可以是我们的系统。
根据我的研究,我发现CORS会导致最常见的漏洞问题,尤其是混合和多级攻击;像XSS-CSRF这样的对。
如果不进一步讨论我的所有发现(这是一篇大文章),如果你真的想通过CORS整合系统,那么应该对参与资源共享的所有合作伙伴进行漏洞评估。根据应用程序域,如果涉及敏感数据,将出现法律问题(例如,如果发生违规,谁负责)。 (复杂性很少合理)。
要在复杂系统上正确使用CORS,应该涉及安全专业人员。如果系统要与多个合作伙伴和多种资源的策略一起发展,那么应该在架构中嵌入安全性以动态验证约束。
似乎很清楚,对于日常使用,CORS应该用于有限的应用程序,没有敏感数据或只有真正的公共资源,除非你真的相信你的合作伙伴&#39;安全性 - 并正确实施所有配置。如果您正在构建服务器端体系结构,这是有效的,但另一种方法也是如此,因为需要信任要在客户端添加的内容。
答案 2 :(得分:1)
例如:您可以将允许您窃取用户cookie的js代码注入某个页面(xss)。你可以通过CORS来做到这一点。
希望,我不是假的。 也许有人会给你更好的答案。