【问题标题】:Javascript cryptographic-hash-protected loaderJavascript 加密哈希保护加载程序
【发布时间】:2016-06-01 20:56:22
【问题描述】:

我们都知道从公共 CDN 网络加载 javascript 会带来安全隐患。另一方面,能够缓存这些资源也有好处。

显然,必须有一个 javascript 解决方案来解决这个问题,例如 SHA-256 的实现用于在从 CDN 加载 jquery 之后但在评估 javascript 之前检查它的完整性。

这样做的最佳选择是什么?

【问题讨论】:

  • 那么你认为这是如何工作的?从您的域中加载受信任的 JS,并验证 CDN 脚本?为什么不首先从您的域加载脚本?只需设置正确的到期时间,您将不再需要 CDN。
  • 是的,就是这样。为已知脚本使用公共 CDN 的原因当然是不必首先加载它们,因为它们被缓存在浏览器中。

标签: javascript cdn sha


【解决方案1】:

Subresource Integrity 是一个 W3C draft specification,正是这样做的:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"
        integrity="sha384-rY/jv8mMhqDabXSo+UCggqKtdmBfd3qC2/KvyTDNQ6PcUJXaxK1tMepoQda4g5vB"
        crossorigin="anonymous">
</script>

【讨论】:

    【解决方案2】:

    如果 CDN 服务器发送 CORS 标头,您可以使用 XHR 检索文件并在评估之前验证内容。请注意,这与通常同步执行脚本元素的方式相比有很大变化:

    <script src="//google.com/jquery"></script>
    <script>//jQuery is available</script>
    

    以上将不再可能,因此如果您已经在传统的顺序同步假设下编写了大量代码,则可能不可行


    如果 CDN 服务器未发送 CORS 标头,则无法查看内容。而且我认为任何解决方法都会破坏目的。

    【讨论】:

      猜你喜欢
      • 2011-12-17
      • 2012-06-12
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2015-05-11
      • 2011-12-03
      • 2016-10-29
      相关资源
      最近更新 更多