CDN或外部JavaScript文件如何在网站中运行?

时间:2011-10-27 15:27:06

标签: javascript xss same-origin-policy

首先,我很尴尬,我不知道这一点。我知道这些事情有效,但不知道为什么。我仍然无法获得有关CDN和Google Analytics或Adsense等内容的信息。

如果这些脚本来自您网站域以外的域名,那么这些脚本如何与same origin policy(SOP)和cross-site scripting(XSS)相关联?根据我对XSS和SOP的理解,这些脚本不应该能够在您的站点中运行或与DOM交互。为什么他们获得特权?这些特殊权限与其他由于XSS和SOP导致浏览器出错的外部脚本有何区别?

简而言之,我想知道为什么允许来自其他域的脚本运行,交互和操纵我的网站?

1 个答案:

答案 0 :(得分:22)

你误解了这些政策。

SOP阻止页面(例如在框架中)与来自不同域的页面交互,或者从不同域中读取资源(AJAX请求)。

只要您明确加载了来自页面中正在执行的域中的脚本,就没有任何问题。 (这就是JSONP的工作方式)但是,您无法读取脚本的来源,因为这是来自不同域的资源。

浏览器安全限制基于执行代码的页面的来源,而不是特定<script>来自的网站。


请注意,包含来自其他域的Javascript会授予该脚本对您网页的完全访问权限;它可以向您的域发送AJAX请求,并通过向其他域发送非AJAX请求来窃取信息。

如果您信任该域,则仅包含来自其他域的脚本。