//maps.google.com/maps/api/js 的子资源完整性值

Sub Resource Integrity value for //maps.google.com/maps/api/js

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

例如:

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

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

https://www.srihash.org/

你粘贴你的 URL 然后在线生成哈希。但是,我认为使用 google 地图 API 不可能做到这一点。我收到以下消息:

Error: this resource is not eligible for integrity checks. See http://enable-cors.org/server.html

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

你没有:

SRI 哈希适用于不会更改的内容。 Google 一直在更改 API 下的代码。您不必选择要使用哪个版本的 API;他们为您选择,这就是为什么该脚本路径中没有版本号的原因。

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

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

即使你做了,也没用:

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

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

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

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

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

这对于 Google 地图 API 是不可能的。

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