mar*_*ela 10 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>
Run Code Online (Sandbox Code Playgroud)
Lin*_*ple 12
您没有找到该脚本的SRI摘要,即使您这样做也无法帮助您.
你没有:
SRI哈希适用于不会更改的内容.Google会一直更改其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东西)它可以用来绕过同源策略,足以嗅出不可访问的内容.
要生成完整性哈希码,您可以使用以下网站:
您粘贴您的URL,然后在线生成哈希。但是,我认为无法使用Google Maps API做到这一点。我收到以下消息:
错误:此资源不符合完整性检查的条件。请参阅http://enable-cors.org/server.html