我在bootstrap的网站上,最近我注意到他们的CDN链接包含一个带有SHA-384密钥的完整性属性。
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>我假设这是一种验证脚本源代码的方法,但更多的是我想知道它是如何使用的,这是否是任何规范的一部分?
此外,这是否只适用于脚本src,或者它是否适用于任何不同来源的源代码?
发布于 2015-12-23 13:19:55
请检查以下内容:
https://developer.mozilla.org/en/docs/Web/HTML/Element/script
使用内容分发网络(CDN)来托管在多个站点之间共享的脚本和样式表等文件,可以提高站点性能并节省带宽。但是,使用CDN也有风险,因为如果攻击者控制了CDN,攻击者可以将任意恶意内容注入CDN上的文件(或完全替换文件),因此还可能攻击从该CDN获取文件的所有站点。
子资源完整性功能使您能够通过确保您的Web应用程序或Web文档(从CDN或任何地方)获取的文件在没有第三方向这些文件注入任何额外内容的情况下交付,并且根本没有对这些文件进行任何其他任何类型的更改,从而降低此类攻击的风险。
点击此处阅读更多信息:
https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity
发布于 2015-12-23 13:21:48
使用Content Delivery Networks (CDN)托管在多个站点之间共享的脚本和样式表等文件,可以提高站点性能并节省带宽。但是,使用CDN也有风险,因为如果攻击者控制了CDN,攻击者可以将任意恶意内容注入CDN上的文件(或完全替换文件),因此还可能攻击从该CDN获取文件的所有站点。
子资源完整性功能使您能够通过确保您的Web应用程序或Web文档(从CDN或任何地方)获取的文件在没有第三方向这些文件注入任何额外内容的情况下交付,并且根本没有对这些文件进行任何其他任何类型的更改,从而降低此类攻击的风险。
使用子资源IntegrityEDIT
通过在任何<script>或<link>元素的完整性属性的值中指定告诉浏览器获取的资源(文件)的base64编码加密散列,可以使用子资源完整性特性。
完整性值至少以一个字符串开头,每个字符串包括一个指示特定散列算法的前缀(当前允许的前缀为sha256、sha384和sha512),后跟一个破折号,并以实际的base64编码的散列结束。
完整性值可以包含由空格分隔的多个哈希。如果资源与这些散列之一匹配,则会加载该资源。
使用base64编码的sha384散列的完整性字符串示例:
sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC
严格地说,完整性值的“散列”部分是通过将特定的散列函数应用于某些输入(例如,脚本或样式表文件)而形成的加密摘要。但是通常使用简写散列来表示加密摘要,所以这就是本文中使用的内容。
欲了解更多信息,请访问:Link
https://stackoverflow.com/questions/34429024
复制相似问题