如果仅仅为了消除浏览器的警告提示,这种做法完全没有意义,骗自己骗用户。
第三方内容应完全视作不安全,无论是否通过 http over tls 加载。
对于浏览器来说,同一个页面引入的所有动态指令具有相同的执行权限,同时对 DOM 具有完全的访问权限。
举例说明:
你的网站
https://yoursite.com/index.html 引入了某第三方视频网站内容,如https://
videosite.com/video.js (或者是 flash 等等任何形式),那么 video.js 的代码可以访问到 DOM 中所有元素,获取 document.cookie,甚至冒充用户执行
yoursite.com 上的 ajax 指令。
这里有个真实的案例,某托管有 js 代码的网站被攻陷,代码被替换成为恶意指令,引用了原始代码的网站都成了受害者。
https://blog.sucuri.net/2014/11/the-dangers-of-hosted-scripts-hacked-jquery-timers.html同样的问题也会发生在众多托管 js 的 cdn 服务身上,比如你使用了 google 托管的 js 库,尽管它是 https 引入的,但仅仅只能保证代码从 google cdn 到用户不会被篡改,但你不能保证 google 不做恶,或者 google 因为某漏洞被攻陷。
为了避免这种盲目信任引入的安全风险,w3c 新增了名为 Subresource Integrity 的草案,让主动嵌入第三方代码的网站可以验证嵌入代码的完整性和可信性。不过目前仅仅是草案,浏览器支持几乎没有。