首先,我很尴尬,我不知道这一点。我知道这些事情有效,但不知道为什么。我仍然无法获得有关CDN和Google Analytics或Adsense等内容的信息。
如果这些脚本来自您网站域以外的域名,那么这些脚本如何与same origin policy(SOP)和cross-site scripting(XSS)相关联?根据我对XSS和SOP的理解,这些脚本不应该能够在您的站点中运行或与DOM交互。为什么他们获得特权?这些特殊权限与其他由于XSS和SOP导致浏览器出错的外部脚本有何区别?
简而言之,我想知道为什么允许来自其他域的脚本运行,交互和操纵我的网站?
答案 0 :(得分:22)
你误解了这些政策。
SOP阻止页面(例如在框架中)与来自不同域的页面交互,或者从不同域中读取资源(AJAX请求)。
只要您明确加载了来自页面中正在执行的域中的脚本,就没有任何问题。 (这就是JSONP的工作方式)但是,您无法读取脚本的来源,因为这是来自不同域的资源。
浏览器安全限制基于执行代码的页面的来源,而不是特定<script>
来自的网站。
请注意,包含来自其他域的Javascript会授予该脚本对您网页的完全访问权限;它可以向您的域发送AJAX请求,并通过向其他域发送非AJAX请求来窃取信息。
如果您信任该域,则仅包含来自其他域的脚本。