【发布时间】:2010-09-14 16:38:45
【问题描述】:
我注意到,就在过去一年左右的时间里,许多主要网站都对其网页结构进行了相同的更改。每个人都将他们的 Javascript 文件从托管在与页面本身(或其子域)相同的域上移至托管在不同名称的域上。
不仅仅是并行化
现在,有一种众所周知的技术可以将您的网页组件分布到多个域以并行下载。 Yahoo recommends it 和其他许多人一样。例如,www.example.com 是托管 HTML 的位置,然后您将图像放在 images.example.com 上,将 javascripts 放在 scripts.example.com 上。这绕过了这样一个事实,即大多数浏览器都会限制每台服务器的同时连接数,以便成为优秀的网民。
以上内容不是我在说什么。
这不仅仅是重定向到内容交付网络(或者可能是——见问题底部)
我所说的是专门在完全不同的域上托管 Javascript。让我具体一点。就在去年左右,我注意到:
youtube.com 已将其 .JS 文件移至 ytimg.com
cnn.com 已将其 .JS 文件移至 cdn.turner.com
weather.com 已将其 .JS 文件移至 j.imwx.com
现在,我知道像 Akamai 这样专门为大型网站外包此内容的内容交付网络。 (Turner 的特殊领域中的名称“cdn”让我们了解这个概念在这里的重要性)。
但请注意这些示例,每个站点都有自己为此目的专门注册的域,而不是内容交付网络或其他基础设施提供商的域。事实上,如果您尝试从这些脚本域中的大多数加载主页,它们通常会重定向回公司的主域。如果您反向查找所涉及的 IP,它们有时似乎指向 CDN 公司的服务器,有时则不是。
我为什么要关心?
曾在两家不同的安全公司工作过,我对恶意 Javascript 感到偏执。
因此,我遵循将允许 Javascript(和其他活动内容,如 Java)在其上运行的网站列入白名单的做法。因此,要使 cnn.com 这样的网站正常运行,我必须手动将 cnn.com 放入列表中。这是一个痛苦的背后,但我更喜欢它而不是替代方案。
当人们使用 scripts.cnn.com 之类的东西进行并行化时,使用适当的通配符可以正常工作。当人们使用 CDN 公司域之外的子域时,我可以只允许 CDN 公司的主域在前面加上一个通配符,然后用一块石头杀死许多鸟(例如 *.edgesuite.net 和 *.akamai.com)。
现在我发现(截至 2008 年)这还不够。现在我必须在我想列入白名单的页面的源代码中四处寻找,并找出该站点用于存储其 Javascript 的“秘密”域(或域)。在某些情况下,我发现我必须允许三个不同的域才能使网站正常工作。
为什么所有这些主要网站都开始这样做?
编辑:好的as "onebyone" pointed out,它似乎与内容的 CDN 交付有关。所以让我根据他的研究稍微修改一下这个问题......
为什么 weather.com 使用 j.imwx.com 而不是 twc.vo.llnwd.net?
为什么 youtube.com 使用 s.ytimg.com 而不是 static.cache.l.google.com?
这背后有一个原因。
【问题讨论】:
标签: javascript webserver cdn provisioning whitelist