【问题标题】:Sub Resource Integrity value for //maps.google.com/maps/api/js//maps.google.com/maps/api/js 的子资源完整性值
【发布时间】:2017-01-15 10:31:36
【问题描述】:

在哪里可以找到脚本的子资源完整性值 //maps.google.com/maps/api/js?

例如:

<script src="//maps.google.com/maps/api/js" integrity="sha256-????" crossorigin="anonymous"></script>

【问题讨论】:

    标签: google-maps google-maps-api-3 google-cdn subresource-integrity


    【解决方案1】:

    您找不到该脚本的 SRI 摘要,即使您找到了也无济于事。

    你没有:

    SRI 哈希适用于不变的内容。谷歌一直在更改作为其 API 基础的代码。您无法选择使用哪个版本的 API;他们为您选择,这就是该脚本路径中没有版本号的原因。

    将 SRI 用于 Google Maps API 脚本实际上并没有提供任何额外的安全性,因为该脚本的全部工作是下载一组实际提供 API 功能的其他脚本的最新版本。

    您不能使用 SRI 来验证那些其他脚本,因此您已经有义务信任 Google 的安全性或放弃使用他们的 Maps API。

    即使你这样做了,也无济于事:

    对于不下载其他 JS 文件的脚本,请尝试在 srihash.org 网站上向下滚动一点。

    它说你可以使用 Linux shell 命令openssl dgst -sha384 -binary FILENAME.js | openssl base64 -A自己生成 SRI 摘要

    但是,对于像这样的不使用 CORS 标头提供内容的网站,这仍然对您没有帮助,因为浏览器需要 CORS 才能进行 SRI 验证。如果没有正确的 CORS 标头,浏览器甚至不会尝试将脚本与 SRI 摘要进行比较。

    这里有一个关于决定要求 CORS 背后的思考过程的解释:https://github.com/w3c/webappsec/issues/338#issuecomment-99766294

    结果是,由于 SRI 哈希适用于所有类型的资源(不仅仅是 JS 和 CSS 文件,它们对整个 CORS 事物有遗留异常),它可以用来绕过同源策略,足以嗅探其他无法访问的资源内容。

    【讨论】:

      【解决方案2】:

      要生成完整性Hash码,可以使用本网站:

      https://www.srihash.org/

      您粘贴您的 URL,然后在线生成哈希。但是,我认为使用 google Maps API 是不可能的。我收到以下消息:

      错误:此资源不符合完整性检查的条件。见http://enable-cors.org/server.html

      【讨论】:

      • 同样的问题。有谁知道谷歌是否有可能启用 CORS?
      【解决方案3】:

      这对于 Google Maps API 是不可能的。

      您可以在此处阅读https://developers.google.com/maps/documentation/javascript/libraries,此 JavaScript 库会不时更新。此外,如果您在 url 中使用固定版本号作为参数,则会更新。

      【讨论】:

        猜你喜欢
        • 2016-11-02
        • 1970-01-01
        • 2016-07-05
        • 2017-12-22
        • 2016-02-22
        • 2018-07-23
        • 2019-03-09
        • 1970-01-01
        • 2018-05-27
        相关资源
        最近更新 更多