为什么我们应该尽快升级到HTTPS?

2018年6月1日07:29:59 11 117 views
创业项目

最近,有关 HTTPS 和 HTTP/2 的文章很多,HTTPS 真的有那么好吗,我的 WEB 服务需要迁移到 HTTPS 吗?对此我的观点是:HTTPS 早就不是锦上添花的可有可无项,它已经逐渐成为 WEB 服务的标配,推荐大家尽早升级。

为什么我们应该尽快升级到HTTPS?

 

HTTPS 可以给用户带来更安全、更好隐私保护的网络体验,这些好处大家都耳熟能详,本文不再赘述。目前各大浏览器都在积极推进 HTTPS 的普及,我们重点来说说这个。

 

浏览器中的 HTTP/2 必须基于 HTTPS 部署

HTTP/2 通过引入二进制分帧层,将 HTTP 的请求和响应报文拆分为二进制帧,从而实现了多路复用、优先级、Server Push 等诸多新特性,大大提升了 WEB 性能。HTTP/2 还引入了基于静态字典和动态字典的头部压缩算法 —— HPACK,有效减少了 HTTP 协议头部开销。现阶段,所有浏览器都只支持 HTTP/2 Over TLS,也就是说浏览器中的 HTTP/2 必须基于 HTTPS 部署

 

API 将在安全环境(Secure Contexts)中才能使用

一些 HTML5 API 可以用来获取用户地理位置、摄像头音视频等隐私数据。尽管网站在使用这些权限前需要获得用户授权,但由于 HTTP 很容易被劫持,通过 HTTP 传输这些隐私数据将会十分危险。

于是,Chrome 启用了 Deprecating Powerful Features on Insecure Origins 计划,今后以下 API 必须在安全环境(Secure Contexts)中才能使用

其中,列表中的 Geolocaiton 和 getUserMedia 在 Chrome 50 中已经只能用于安全环境。也就是说在最新的 Chrome 中,要想通过 HTML5 API 获取用户位置,或者要用 WebRTC 实现视频聊天,都需要先部署 HTTPS。

EME 全称是 Encrypted Media Extensions(加密媒体扩展),它扩展了 HTMLMediaElement,提供了一组 API 用于控制受保护的文档,实现 HTML 媒体的数字版权保护能力。EME 是一个比较冷门的 API。

AppCache 功能已经被废弃,不推荐继续使用,类似需求建议用 Service Workers 来实现。

 

什么是安全环境(Secure Contexts)

至于什么是安全环境(Secure Contexts),W3C 这份文档进行了详细的解释。简而言之,HTTP 页面一定不是安全环境;HTTPS 页面不一定是安全环境。尤其需要注意的是,在 HTTP 页面中打开的 HTTPS 页面,如果 window.opener 不为空,不属于安全环境。

至于大家担心的本地调试问题,Chrome 也有考虑:

  • localhost 会被认为是安全的环境,所以可以继续使用 localhost 域名测试上述 API;
  • 通过 --user-data-dir=/test/only/profile/dir 参数创建一个新的 Profile 后,可以通过 --unsafely-treat-insecure-origin-as-secure="http://example.com 参数让 Chrome 信任指定的网站;

另外,Mozilla 公司在一年前也明确表态会逐步淘汰不安全的 HTTP,详见:Deprecating Non-Secure HTTP

 

HTTPS 迁移过程中的一些疑问

在往 HTTPS 迁移的过程中,大家普遍有一些担心,我挑选了一些有代表性的看法进行讨论。

HTTPS 会增加系统复杂性

首先,部署 HTTPS 确实会引入很多新工作,例如证书、SSL 配置、全站资源替换等等,确实会给开发和运维同学增加工作量。从 HTTP 切换到 HTTPS 的过程是比较麻烦,但一旦完成了切换,之后就不需要投入太多精力在这上面。通常,部署 HTTPS 只需要改造直接跟用户打交道的 HTTP 接入层,内部系统之间的调用无需改造。

HTTPS 证书会增加成本

首先,对于个人及小公司来说,有很多零费用的证书方案可供选择,其中以 Let's Encrypt 最为出名,足够简单好用。而对于中大型公司来说,相比其他开销,HTTPS 证书采购成本基本可以忽略不计。

HTTPS 会导致性能下降

HTTPS 增加了 TLS 握手环节,再加上 HTTPS 应用数据传输需要经过对称加密,HTTPS 确实给性能优化提出了更大的挑战。好在随着服务器、浏览器以及 SSL 库在性能上的大幅提升,经过良好优化后 HTTPS 带来的性能损耗完全可以接受。更重要的是,部署了 HTTPS 意味着可以使用 HTTP/2,从而带给用户更好的性能体验。

非敏感内容不需要 HTTPS

很多人觉得只有银行、电商等跟钱打交道的网站才需要部署 HTTPS,其实不然。首先,非 HTTPS 网站很容易被劫持并插入广告,影响用户体验;其次,即使你的网站上没有交易支付等敏感功能,但只要有用户登录,帐号密码被第三方盗取也可以用来社工或撞库;最后,一些流量很大的网站,如果不部署 HTTPS 很容易被别有用心的人利用,例如 2015 年某大型网站的 JS 就被人劫持用来 DDoS 攻击 Github。

 

一个误区

最后纠正一个误区:并不是说部署了 HTTPS,安全方面就可以高枕无忧。HTTPS 解决的只是数据传输过程的安全性和保密性,如果 WEB 程序或者服务器有安全漏洞,或者用户电脑中病毒了,那安全性无从谈起。最后,要让 HTTPS 发挥最大作用,往往还需要结合其它技术一起使用,例如 HSTS、HPKP 等,本文不展开讨论了。

网络转载

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:11   其中:访客  7   博主  4

    • avatar 网上购物 3

      除了安全性之外,最主要的是各大搜索引擎鼓励站长安装ssl,可能对网站排名有一定的优势

      • avatar 适合兼职的全新赚钱工具 1

        技术更新确实太快了。

        • avatar boke112导航 6

          挂上谷歌广告之后,偶尔会发现小绿锁不见,手机端访问偶尔会出现证书问题,不知道这个问题怎么破?

            • avatar Liwei Admin

              @boke112导航 有些广告主的网站还是http,广告物料不是https就没有绿锁,不是全https资源有些浏览器就会报警。

            • avatar 姜辰 6

              就是为了防劫持我才添加的~

                • avatar Liwei Admin

                  @姜辰 哈哈,是的,折腾一下也可以

                • avatar 西枫里博客 5

                  最主要的作用就是防劫持了~

                  • avatar ZAERA 3

                    个人对https的看法是,在能不用的地方不用,需要用的地方在用,hhtps握手时间还是相对来说比较耗时的

                      • avatar Liwei Admin

                        @ZAERA 个人博客弄一下,折腾一下也可以

                      • avatar 叶少侠 3

                        大势所趋,升级是有比较多的好处!大部分人估计懒的折腾 :mrgreen:

                          • avatar Liwei Admin

                            @叶少侠 折腾一下还是很简单的,而且提速效果也可以