是否有任何实现或规范在 <script> 标记的属性中包含哈希或签名,以便浏览器可以在执行文件之前验证是否检索到正确的文件?像这样的东西:
<script
src="http://cdn.example.com/jquery-2001.js"
signature="sha-256/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
></script>
动机是这样的:通常,您为网站使用的每一个额外的 CDN 或主机都会增加您的漏洞,因为添加了一个可以被黑客攻击以破坏您的网站的新目标。允许您的主要前端服务器断言这些文件的哈希值或签名可以完全消除这种风险,让您在设计架构时更加灵活。您甚至可以从不受信任的对等网络请求丢失的文件。
我以为我记得有关此的规范,但一直没能找到。
最佳答案
此功能由 W3C 提议为 Subresource Integrity .截至 2015 年 12 月,此建议已得到实现 by Chrome 44和 Firefox 43 .
EXAMPLE 1<link rel="stylesheet" href="https://site53.example.net/style.css" integrity="sha256-vjnUh7+rXHH2lg/5vDY8032ftNVCIEC21vL6szrVw9M=" crossorigin="anonymous">
有a superficially similar feature in Content Security Policy Level 2 , 但它只限制内联 <script>
的内容和 <style>
元素,而不是外部元素。
关于javascript - 指定来自不受信任主机的脚本的散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29270598/