我在哪里可以找到脚本的子资源完整性值//maps.google.com/maps/api/js?
例如:
<script src="//maps.google.com/maps/api/js" integrity="sha256-????" crossorigin="anonymous"></script>
答案 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
但是,对于不使用CORS标头提供内容的源,这仍然无法帮助您,因为浏览器需要CORS才能进行SRI验证。如果资源在没有CORS标头的情况下提供,则浏览器将拒绝加载资源,甚至比SRI摘要不匹配时更快。
对于在此处要求CORS的决定背后的思考过程有一个解释:https://github.com/w3c/webappsec/issues/338#issuecomment-99766294
结果是,由于SRI哈希是针对所有类型的资源(不仅仅是对整个CORS事物有遗留例外的JS和CSS文件),它可以用来绕过同源策略足以嗅到否则无法访问内容。
答案 1 :(得分:4)
生成完整性哈希码,你可以使用这个网站:
粘贴您的网址,然后在线生成哈希值。但是,我认为不可能使用Google Maps API。我收到以下消息:
错误:此资源不符合完整性检查的条件。见http://enable-cors.org/server.html
答案 2 :(得分:0)
这对于Google Maps API是不可能的。
如您在这里https://developers.google.com/maps/documentation/javascript/libraries所读,此javascript库有时会更新一次。另外,如果您在网址中使用固定版本号作为参数,则会进行更新。