近期遇到了一些运营商劫持、木马入侵等情况,会篡改页面中引入的js文件,跳转到涉赌网站,或者领取支付宝红包、打开淘宝京东推广页面等等情况。并且具有很强的隐蔽性,非搜索引擎进入的流量不会跳转,PC客户端不会跳转。
使用integrity可以有效避免篡改,主要是能及时帮助我们发现被篡改了。
当然,防止被篡改最重要的还是防木马以及全站https:确保不引入非https的资源(比如我们最近常见的使用第三方统计代码导致的入侵)
计算hash
示例如下,只需要把css
/js
资源的url改一下就行了
windows
环境需要注意:直接用PowerShell
或者Cmd
是没法运行的,完整版的cmder集成的有curl
、openssl
这些工具
1
|
curl https://www.lmlq.com/css/pintuer.css | openssl dgst -sha384 -binary | openssl enc -base64 -A
|
返回结果如下
1
|
% Total % Received % Xferd Average Speed Time Time Time Current
|
最下面那行 去掉结尾的%
就是我们需要的hash
值
添加integrity
在引入资源的地方 增加属性:
1
|
crossorigin="anonymous" integrity="sha384-[刚刚的hash值]"
|
例如
1
|
<link crossorigin="anonymous" integrity="sha384-XMdrg/GeIQthIXiTahpiAMx6mItaEcZ7CT+mglnrKgcLsSi3znUZFEWmGrqAJb3I" rel="stylesheet" href="/css/pintuer.css">
|