在HTML上添加integrity,验证js和css的hash,防止篡改
Contents
近期遇到了一些运营商劫持、木马入侵等情况,会篡改页面中引入的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"> |