https开启gzip会有security vulnerability(BREACH/CRIME)
ssl协议里面在传输数据的时候是有压缩这个步骤的,它是分块、压缩、计算校验码、加密,最后封装
HTTPS起到两个作用,一是加密二是防篡改。
CRIME漏洞的原理是:如果启用压缩,攻击者可以通过选择明文来与被加密的其他数据一同发送,因为HTTPS不加密关于数据原文长度的信息,可以通过比较原文与密文的长度计算压缩率,如果与被加密数据的明文有重合的话压缩率会提高,如果没有重合的话压缩率则会降低。这时可以采用分治算法的输入不断选择明文最终推断密文的内容。唯一的解决方法就是在启用HTTPS禁用压缩。
当然如果是js, css等主要是为了防篡改而启用https的资源,gzip压缩并无影响。
需要注意的是微软为了防止IE受到影响,如果启用HTTPS就会停止支持压缩。
CRIME漏洞的原理是:如果启用压缩,攻击者可以通过选择明文来与被加密的其他数据一同发送,因为HTTPS不加密关于数据原文长度的信息,可以通过比较原文与密文的长度计算压缩率,如果与被加密数据的明文有重合的话压缩率会提高,如果没有重合的话压缩率则会降低。这时可以采用分治算法的输入不断选择明文最终推断密文的内容。唯一的解决方法就是在启用HTTPS禁用压缩。
当然如果是js, css等主要是为了防篡改而启用https的资源,gzip压缩并无影响。
需要注意的是微软为了防止IE受到影响,如果启用HTTPS就会停止支持压缩。
HTTPS协议实际上包含了HTTP协议和STL/SSL协议两层。这两层协议又有各自独立的压缩逻辑。
CRIME是针对STL层压缩的攻击。BREACH是针对HTTP层压缩的攻击。
这些压缩逻辑都是协议自带的,浏览器会自动选择是否压缩,你没必要操心。