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

时间:2016-09-07 16:14:30

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

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

例如:

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

3 个答案:

答案 0 :(得分:9)

您找不到该脚本的SRI摘要,即使您这样做也无法帮助您。

您没有:

SRI哈希适用于不会更改的内容。 Google会一直更改其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哈希是针对所有类型的资源(不仅仅是对整个CORS事物有遗留例外的JS和CSS文件),它可以用来绕过同源策略足以嗅到否则无法访问内容。

答案 1 :(得分:4)

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

https://www.srihash.org/

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

  

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

答案 2 :(得分:0)

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

如您在这里https://developers.google.com/maps/documentation/javascript/libraries所读,此javascript库有时会更新一次。另外,如果您在网址中使用固定版本号作为参数,则会进行更新。