javascript - 指定来自不受信任主机的脚本的散列

标签 javascript html cryptography subresource-integrity

是否有任何实现或规范在 <script> 标记的属性中包含哈希或签名,以便浏览器可以在执行文件之前验证是否检索到正确的文件?像这样的东西:

<script
  src="http://cdn.example.com/jquery-2001.js"
  signature="sha-256/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
></script>

动机是这样的:通常,您为网站使用的每一个额外的 CDN 或主机都会增加您的漏洞,因为添加了一个可以被黑客攻击以破坏您的网站的新目标。允许您的主要前端服务器断言这些文件的哈希值或签名可以完全消除这种风险,让您在设计架构时更加灵活。您甚至可以从不受信任的对等网络请求丢失的文件。

我以为我记得有关此的规范,但一直没能找到。

最佳答案

此功能由 W3C 提议为 Subresource Integrity .截至 2015 年 12 月,此建议已得到实现 by Chrome 44Firefox 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/

相关文章:

.Net SHA256Managed 产生无效散列

具有相同变量的 Python 密码库解密给出 InvalidTag

javascript - 是否可以禁用 iframe 内容的控制台输出?

javascript - Mocha 抛出 "Resolution method is overspecified"

java正则表达式匹配

javascript - Google Chrome 扩展可折叠菜单

javascript - ReactJS:我有一个跳过第一个 Prop 方法的点击处理程序

java - 如何在单击两个单独的链接时打开两个单独的弹出窗口?

html - Safari 中的 img 被隐藏

python - Pycryptodome 官方例子不清楚