3

对于 jQuery 或 YUI3 等 JavaScript 库,Google 或 Yahoo 都将脚本托管在其 CDN 上,YUI 3 Cookbook 段落说:

也许您的页面使用 SSL,在这种情况下加载远程资源是一个坏主意,因为它会将您的用户的安全信息暴露给远程站点

我只能看到 CDN 站点必须是可信的,否则恶意 JavaScript 可以在 www.mycompany.com 的网页上运行。但是假设 CDN 站点(谷歌和雅虎)是很受信任的,为什么 SSL 网页不想在 CDN 上包含那些 JavaScript 库——它如何“将用户的安全信息暴露给远程站点”,如书?

4

3 回答 3

2

通过 SSL 将外部 Javascript 库加载到加密网页上可以被视为背叛了用户的信任,因为理论上用户提供给网站的信息不再只是他们和安全网站之间的信息。此外,如果外部图书馆受到损害,传递到网站本身的信息也可能受到损害。

YUI3 开发人员 Ryan Grove 在这里详细阐述了这一点。

简而言之,

[...]你让 FooCo 在你的网站上执行它想要的任何 JavaScript。您正在通过 SSL 安全地加载该 JavaScript,因此浏览器不会显示任何可怕的警告,但现在您的用户不仅仅是与 buygadgets.example.com 通信。现在他们还与 cdn.foolib.com 通信,并且由于 cdn.foolib.com 可以在您的页面上运行 JavaScript,他们还可以看到用户在这些页面上读取或输入的任何信息。

当然,您是否决定通过 SSL 提取外部可执行代码与安全性对您的特定用例的重要性有关,并且对此主题有不同的看法。

于 2013-01-03T23:07:42.030 回答
1

这取决于 CDN 是否具有您请求的资源的安全版本。谷歌在这方面似乎比雅虎做得更好!从我所看到的。

您可以使用对 CDN 资源的无协议引用,如下所示:

从 http 或 https 工作:

<script type="text/javascript"
    src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

仅适用于 http:

<link rel="stylesheet"
    type="text/css"
    href="//yui.yahooapis.com/3.8.0/build/cssreset/cssreset-min.css" />

您还可以从 CDN 有条件地加载脚本并回退到本地版本:

<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js">
</script>
<script>
    !window.jQuery.ui && document.write(            
    unescape('%3Cscript src="/scripts/jquery-ui-1.8.14.min.js"%3E%3C/script%3E'))
</script>
于 2012-12-20T20:23:23.483 回答
0

这意味着您网站上的大陆既来自安全服务器,也来自不安全服务器。此外,可以将数据发送到安全和不安全的服务器(cdn 站点)。这确实是保护您网站的一种手段,如果您要起诉 SSL,那么也有理由使用 SSL 为您的所有资源提供服务。

话虽如此,大多数 CDN 都可以通过 SSL 连接(包括 google)来提供这些资源。

于 2012-12-20T20:24:55.083 回答