![]() |
1
7
它可能是一个主要的安全漏洞,因此您必须信任托管javascript文件的站点。 例如,该代码可以将更多的脚本标记和img标记插入到您的站点中,以便将敏感数据中继到第三方。 大卫对同一原产地政策的评论可能会产生误导。将数据中继到远程站点的经典方法是将img标记插入到远程域:
如果远程主机上的javascript代码被更改为动态注入这样的img标记,那么您的站点可能存在安全漏洞。对于其中的一些问题有一些缓解措施,例如使用仅限http的cookie,这些cookie无法通过javascript访问。 分析系统就是一个很好的例子。您必须相信提供商不会将任何敏感数据(如您自己的cookies)发送到远程位置。你还需要信任提供者 他们的 系统是安全的,黑客无法更改服务器上的javascript文件。分析系统通常通过使用这些相同的技术来工作,但希望它们能将其用于善而不是恶。从某种意义上说,这和担心开发人员是否编写了好的、安全的代码以及他们是否引入了秘密后门没什么两样。 至于 为什么 这是允许的,这只是历史。网络的设计根本没有考虑到安全性。无论是csrf攻击、重放攻击还是xss攻击,这些都是web设计中的基本缺陷,现在已经成为web开发人员关注的问题。 |
![]() |
2
3
数据的来源无关紧要,重要的是它的使用范围。 您只是从另一个域获取脚本,它仍然在您自己页面的作用域中运行,因此它无法访问加载它的域中的资源。 在存在跨域问题的情况下,例如iframe包含来自不同域的页面,则有两个不同的作用域。iframe中的页面在加载它的域的作用域中运行,因此它可以访问该域中的资源,但是它不能访问承载iframe的页面中的任何内容,因为这是一个不同的作用域。 (注意:我不知道“scope”这个词在这里是否常用,可能有一个更好的术语来描述它。) |
![]() |
3
0
我不知道为什么我们能做到。但是您可以使用内容安全策略(content security policy,csp)来防止这种情况发生,csp是web应用程序发送的一个http头,它声明除了您显式允许的域之外,不应该加载javascript。 |