我在做一些内容传送网络的研究。对于那些不知道的人来说,CDN是一大群服务器,它们缓存并迅速向最终用户提供静态内容(如图像、css、js等)。can不仅可以通过缓存内容,还可以通过限制网络跳数来检索内容,从而显著提高性能。
我正在考虑使用免费的CDN,但我惊讶地发现,在使用这些CDN时,几乎没有关于潜在安全风险的文章、博客或论坛。使用免费CDN的风险是什么?这些风险是如何减轻的?
发布于 2012-07-03 22:20:39
由于通常是从CDN加载CSS、JavaScript和图形,因此在CDN服务器(即运行CDN的公司)上具有类似根权限的任何人都可以:
总之,只要使用你足够信任的CDN就不会做那些事情。
发布于 2016-07-12 04:50:44
@ThiefMaster的答案在列举使用外部控制的内容的风险方面做得很好--这基本上属于在用户浏览器上执行或显示任意代码和内容的范畴。
我将主要集中在你的最后一个问题:How are those risk mitigated?
,它没有被解决--自那以后(在4年内)发生了很大的变化。
当包含来自CDN的外部资源时,主要的防御措施是使用次级资源完整性(SRI)。SRI扩展了两个具有完整性属性的HTML元素,该属性包含作者希望加载的资源表示的加密散列。具体来说,这些是<script>
和<link>
元素,通常分别用于包括第三方Javascript和CSS。
示例:
</div></blockquote><div>可以使用一个或多个散列,通常使用base64编码的openssl生成。浏览器使用它支持的“最强”浏览器。</div><div>现在支持<a href="https://www.chromestatus.com/feature/6183089948590080">铬</a>和<a href="https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity">火狐</a>。</div><div>当这些浏览器遇到受SRI保护的元素时,如果不匹配预期的结果,它们会计算摘要并返回网络错误。为了防止CDN上的更新,可以将<a href="https://hacks.mozilla.org/2015/09/subresource-integrity-in-firefox-43/">故障转移</a>设置为其他CDN或您自己的服务器。</div><div>您可以注意到的另一个防御方法是使用<code>crossorigin="anonymous"</code>属性。这样可以防止浏览器向CDN发送cookie,从而避免<a href="https://www.w3.org/TR/SRI/#cross-origin-data-leakage">CORS泄漏</a>,从而减少请求大小。</div><div>最后,通过设置仅将攻击面限制在CDN上的限制性<code>Content-Security-Policy</code>,可以发现一个非常小的好处,即即使易受攻击的CDN被不同的JS文件感染,它也无法直接访问数据(尽管可以通过CDN)。</div><div>除了上面的各种链接之外,另一个有用的参考是这个<a href="https://hacks.mozilla.org/2015/09/subresource-integrity-in-firefox-43/">Mozilla黑客文章</a>。</div>
https://security.stackexchange.com/questions/16797
复制相似问题