14

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

例如:

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

3 回答 3

26

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

你不:

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

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

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

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

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

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

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

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

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

于 2017-09-01T17:23:44.110 回答
8

要生成完整性哈希码,您可以使用此网站:

https://www.srihash.org/

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

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

于 2016-09-07T17:09:01.303 回答
0

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

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

于 2019-03-15T15:29:16.403 回答