如果网页使用SSL(https),为什么我们不在CDN上使用JavaScript库?

如果网页使用SSL(https),为什么我们不在CDN上使用JavaScript库?,javascript,ssl,cdn,yui3,Javascript,Ssl,Cdn,Yui3,对于jQuery或YUI3等JavaScript库,Google或Yahoo都在其CDN上托管脚本,a表示: 也许您的页面使用SSL,在这种情况下,加载远程资源是非常困难的 这是个坏主意,因为它会将用户的安全信息暴露给远程用户 场地 我只能看到CDN站点必须是可信的,否则恶意JavaScript可能会在www.mycompany.com的网页上运行。但是假设CDN站点(Google和Yahoo)很受信任,为什么SSL网页不想在CDN上包含这些JavaScript库——它怎么能像书中所描述的那样“

对于jQuery或YUI3等JavaScript库,Google或Yahoo都在其CDN上托管脚本,a表示:

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


我只能看到CDN站点必须是可信的,否则恶意JavaScript可能会在www.mycompany.com的网页上运行。但是假设CDN站点(Google和Yahoo)很受信任,为什么SSL网页不想在CDN上包含这些JavaScript库——它怎么能像书中所描述的那样“向远程站点公开用户的安全信息”?

这取决于CDN是否有您请求的资源的安全版本。谷歌似乎比雅虎更擅长这一点!据我所见

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

通过http或https工作:

<script type="text/javascript"
    src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<link rel="stylesheet"
    type="text/css"
    href="//yui.yahooapis.com/3.8.0/build/cssreset/cssreset-min.css" />

仅从http工作:

<script type="text/javascript"
    src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<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>

!window.jQuery.ui&&document.write(
unescape(“%3Cscript src=“/scripts/jquery-ui-1.8.14.min.js”%3E%3C/script%3E'))

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


尽管如此,大多数CDN都可以通过SSL连接(包括谷歌)为这些资源提供服务。

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

YUI3开发人员Ryan Grove对此进行了详细阐述

总之,

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


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

我想他们是说您可能不应该信任Google和Yahoo:-)如果CDN没有https链接怎么办,那么,是不可能加载它,还是网页可以加载它,只是“一些安全的用户信息可以公开”?(但是怎么做呢?)这实际上意味着所有使用
https://ssl.google-analytics.com/ga.js
正在破坏信任这完全是胡说八道。我们完全可以信任从
https://ssl.google-analytics.com/ga.js
,以及
//ajax.googleapis.com/ajax/libs
CDN。你自己的网站被黑客攻击的可能性是那些被破坏的图书馆的一百万倍。