Contents
  1. 1. 计算hash
  2. 2. 添加integrity

近期遇到了一些运营商劫持、木马入侵等情况,会篡改页面中引入的js文件,跳转到涉赌网站,或者领取支付宝红包、打开淘宝京东推广页面等等情况。并且具有很强的隐蔽性,非搜索引擎进入的流量不会跳转,PC客户端不会跳转。

使用integrity可以有效避免篡改,主要是能及时帮助我们发现被篡改了。

当然,防止被篡改最重要的还是防木马以及全站https:确保不引入非https的资源(比如我们最近常见的使用第三方统计代码导致的入侵)

计算hash

示例如下,只需要把css/js资源的url改一下就行了

windows环境需要注意:直接用PowerShell或者Cmd是没法运行的,完整版的cmder集成的有curlopenssl这些工具

1
curl https://www.lmlq.com/css/pintuer.css | openssl dgst -sha384 -binary | openssl enc -base64 -A

返回结果如下

1
2
3
4
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload Upload Total Spent Left Speed
100 99534 100 99534 0 0 209k 0 --:--:-- --:--:-- --:--:-- 209k
XMdrg/GeIQthIXiTahpiAMx6mItaEcZ7CT+mglnrKgcLsSi3znUZFEWmGrqAJb3I%

最下面那行 去掉结尾的% 就是我们需要的hash

添加integrity

在引入资源的地方 增加属性:

1
crossorigin="anonymous" integrity="sha384-[刚刚的hash值]"

例如

1
<link crossorigin="anonymous" integrity="sha384-XMdrg/GeIQthIXiTahpiAMx6mItaEcZ7CT+mglnrKgcLsSi3znUZFEWmGrqAJb3I" rel="stylesheet" href="/css/pintuer.css">
Contents
  1. 1. 计算hash
  2. 2. 添加integrity