integrity 属性允许浏览器检查获取的脚本,以确保如果源已被操纵,则永远不会加载代码。

子资源完整性 (Subresource Integrity, SRI) 是一项 W3C 规范,它允许 Web 开发人员确保托管在第三方服务器上的资源没有被更改。推荐使用 SRI!

使用 SRI 时,网页保存哈希,服务器保存文件(在本例中为 .js 文件)。浏览器下载文件,然后检查它,以确保它与 integrity 属性中的哈希匹配。如果匹配,则使用该文件,如果不匹配,则阻止该文件。

可以使用在线 SRI 哈希生成器来生成完整性哈希:SRI 哈希生成器子资源完整性

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-7ymO4nGrkm372HoSbq1OY2DP4pEZnMiA+E0F3zPr+JQQtQ82gQ1HPY3QIVtztVua" crossorigin="anonymous"></script>

可使用 openssl 生成完整性哈希:

openssl dgst -sha384 -binary FILENAME.js | openssl base64 -A