[英]Specifying the hash of a script from an untrusted host
是否有任何实现或规范在 <script> 标签的属性中包含哈希或签名,以便浏览器可以在执行之前验证是否检索到正确的文件? 就像是:
<script
src="http://cdn.example.com/jquery-2001.js"
signature="sha-256/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
></script>
动机是这样的:通常,您为站点使用的每个额外 CDN 或主机都会增加您的漏洞,因为添加了一个可以被黑客入侵以危害您站点的新目标。 允许您的主要前端服务器断言这些文件的散列或签名可以完全消除这种风险,让您在设计架构时更加灵活。 您甚至可以从不受信任的对等网络请求丢失的文件。
我以为我记得有关此的规范,但一直找不到。
此功能由 W3C 提议为Subresource Integrity 。 截至 2015 年 12 月,此建议已由Chrome 44和Firefox 43 实施。
例 1<link rel="stylesheet" href="https://site53.example.net/style.css" integrity="sha256-vjnUh7+rXHH2lg/5vDY8032ftNVCIEC21vL6szrVw9M=" crossorigin="anonymous">
内容安全策略级别 2有一个表面上相似的特性,但它只限制内联<script>
和<style>
元素的内容,而不限制外部元素。
根据 Mozilla Developer Network 文档,它看起来不支持:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
但是,您始终可以通过 XHR 获取资源(假设配置了 CORS),对其进行散列,如果它很酷,则使用 eval()。 然而,虽然这是一个有趣的技术练习,但它似乎并不实用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.