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

nic*_*ine 16 javascript xss same-origin-policy

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

如果这些脚本来自您网站域以外的域,那么这些脚本是如何与相同的源策略(SOP)和跨站点脚本(XSS)相结合的?根据我对XSS和SOP的理解,这些脚本不应该能够在您的站点中运行或与DOM交互.为什么他们获得特权?这些特殊权限与其他因XSS和SOP导致浏览器错误的外部脚本有何区别?

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

SLa*_*aks 22

你误解了这些政策.

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

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

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


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

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

  • 脚本代码具有对DOM的完全访问权限,因此它可以通过包括动态添加"<script>"元素的方式来处理它.同样,浏览器基本上假设您知道自己在做什么.浏览器将*阻止*访问从其他域加载的那些脚本的源代码.脚本代码本身的来源永远不会影响它可以做什么,只是其他脚本是否可以访问源代码.(应该指出的是,有些人认为这是一个安全问题,但现在它会破坏网络以禁止它.) (3认同)