如何在HTML?中加密验证网页要求
例如,如果我有一些外部资源,比如图像、样式表,或者(最重要的是)在(可能不受信任的)内容传递网络上的脚本,那么是否有可能在使用之前强制客户端浏览器以加密方式验证下载资源的散列?对此是否有一些HTML属性或URL方案,或者是否需要手动编写一些JavaScript才能完成?
其基本原理是,在HTTPS上提供HTML中的散列可以为CDN-提供额外的防御措施。
与此有关的问题:
发布于 2016-08-16 14:22:58
截至2016年6月23日,子资源完整性是一项W3C建议,允许您这样做(这里草稿)。根据执行情况报告的说法,它已经在火狐43和Chrome 45中实现。
使用子资源完整性的简单示例如下:
<script src="https://example.com/example.js"
integrity="sha256-8OTC92xYkW7CWPJGhRvqCR0U1CR6L8PhhpRGGxgW4Ts="
crossorigin="anonymous"></script>还可以在完整性字段中指定多个算法--散列对(称为元数据),用空格分隔,忽略无效数据(§3.3.3)。客户端将筛选出最强的元数据值(第3.3.4条),并将实际数据的哈希值与最强元数据值(§3.3.5)集中的哈希值进行比较,以确定资源是否有效。例如:
<script src="https://example.com/example.js"
integrity="
md5-kS7IA7LOSeSlQQaNSVq1cA==
md5-pfZdWPRbfElkn7w8rizxpw==
sha256-8OTC92xYkW7CWPJGhRvqCR0U1CR6L8PhhpRGGxgW4Ts=
sha256-gx3NQgFlBqcbJoC6a/OLM/CHTcqDC7zTuJx3lGLzc38=
sha384-pp598wskwELsVAzLvb+xViyFeHA4yIV0nB5Aji1i+jZkLNAHX6NR6CLiuKWROc2d
sha384-BnYJFwkG74mEUWH4elpCm8d+RFIMDgjWWbAyaXAb8Oo//cHPOeYturyDHF/UcnUB"
crossorigin="anonymous"></script>如果客户端理解SHA256和SHA384,而不理解MD5,那么它会用空格标记integrity属性的值,并将md5-元数据标记作为垃圾丢弃。然后,客户端确定元数据中最强的散列是SHA384,并将它们的值与实际接收的数据的SHA384哈希进行比较。
https://stackoverflow.com/questions/36899315
复制相似问题