Chrome 90 将默认使用 HTTPS,Web 更安全了

本文涉及的产品
云防火墙,500元 1000GB
简介: 4月13日正式发布的Chrome 90,带来了哪些有意思的新特性呢?
作者 | 寒雁Talk

image.png

4月13日正式发布的Chrome 90,带来了哪些有意思的新特性呢?

TL;TR

  • Chrome 90是哪天发布的?2021-04-13
  • Chrome 90更新了多少个特性?23个,具体有哪些特性可以查看Chrome Platform Status
  • Chrome 90将使用哪个版本的V8引擎?v9.0
  • Chrome 90最大的亮点是什么?默认使用HTTPS协议,其实是非常小的改动,但是还是蛮重要的,HTTP裸奔的时代终于快要结束了,可惜这个特性还在灰度没有完全发布
  • 我感兴趣的新特性依次有哪些?

    • A safer default for navigation: HTTPS
    • AV1 Encoder
    • WebXR Depth API和WebXR AR Lighting Estimation
    • Feature: Block HTTP port 554
  • 你感兴趣的新特性依次有哪些?这个我就不知道了啊,欢迎留言评论!

详细解读

A safer default for navigation: HTTPS

在浏览器地址栏输入URL,然后回车,之后发生了什么?这是一个非常经典的面试题。

Chrome 90开始,将会默认使用HTTPS协议打开URL,让这个面试题的答案变了一点点。

当我们输入example.com,Chrome 90之前的版本会默认访问http://example.com,服务端如果配置了重定向,则会重定向到https://example.com;而Chrome 90会默认访问https://example.com

眼见为实,不妨简单测试一下(果然翻车了)。PS:测试之前需要清除浏览数据,否则Chrome第二次访问时会默认使用HTTPS。

当我使用Chrome 89打开kiwenlau.com时,会发现第一个请求使用的是HTTP协议(http://kiwenlau.com/),返回状态301,重定向到https://kiwenlau.com/,之后所有的请求使用的都是HTTPS协议:

image.png

当我使用Chrome 90打开kiwenlau.com时,会发现第一个请求居然使用的依然还是是HTTP协议http://kiwenlau.com/),而不是HTTPS协议,这就很尴尬了:

image.png

我本来以为这是BUG,于是提了一个issue:

  • Issue 1200048: Chrome 90 does not use https by defaut

根据回复,Chrome团队还在对这个特性进行灰度,如果希望开启这个特性,可以到chrome://flags把#omnibox-default-typed-navigations-to-https设为"Enabled":

image.png

严格来讲,只有第一次访问kiwenlau.com的第一个请求使用了HTTP协议,貌似也没什么大不了的。不过,要知道HTTP协议本身是明文传输的(其实HTTP/2也没有要求非得加密,只是所有的浏览器都要求HTTP/2必须加密,这样的话,只有HTTPS才能升级HTTP/2),这意味着网络中每一个节点都是能查看并且篡改HTTP的通信内容,这也是页面劫持的基本原理,想想是不是有点后怕,尤其对于那些喜欢访问奇奇怪怪网站的同学来说。

如果使用Charles抓包来对比一下,可以发现,对于HTTP请求,Contents是明文:

image.png

对于HTTPS请求,Content是加密后的,看起来是乱码:

image.png

当然,对于支持HTTPS的站点,省去了HTTP到HTTPS重定向这一步,也是可以提高访问性能的,不过这个问题倒是其次的,毕竟只有一个HTTP请求,而且很多网站本来就很慢了,不在乎这几十毫秒。。。

Chrome一直在推进HTTPS协议在业界的应用,关于这一点,我之后写一篇博客详述(挖坑)。

AV1 Encoder

AV1的全称为AOMedia Video 1,是一个开源、免费的视频编码格式,编码效率更高。根据Netflix、Facebook的数据,AV1相对于VP9,可以将压缩效率提升20% ~ 30%左右。爱奇艺也在去年启用了AV1格式,可以节省20%的带宽。Youtube最新定制的视频芯片(VCU,Video Coding Unit)Argos也支持了AV1。

对于视频类应用来说,昂贵宽带费用一直是非常沉重的负担,这也是一些知名长视频网站一直无法盈利的关键原因之一(另外一个关键原因是内容成本)。根据爱奇艺最新的2020年财报,其2020年净亏损70亿人民币,其中带宽开支高达24亿人民币,占了亏损的34.3%。对于视频类应用来说,使用AV1这种更高效的视频编码格式,有利于减少宽带费用。

WebRTC的全称为Web Real-Time Communication,用于在Web应用中实现实时的视频和语音通信。其实WebRTC已经是个已经有10年历史的技术了,疫情的爆发促进了视频会议需求的爆发,使得WebRTC变得更加重要了。

Chrome 90支持了AV1 Encoder,用于优化WebRTC视频通信:提升压缩效率,减少带宽使用;支持30kbps以及更低码率的视频,服务低带宽的用户;优化了屏幕共享效率。

疫情在全球范围内爆发已经1年多了,这极大地增强了用户对于视频会议、直播的需求,AV1 Encoder这样的技术进步也可以帮助大家渡过现在的难关,这也是技术最大的意义。

AV1是由AOMedia(Alliance for Open Media)开发的,旨在取代Google开发的VP9,同时与需要收取专利费的H.263展开竞争。AOMedia其实也不是外人,Google是其核心成员,且AV1也是由Google主导开发的。作为程序员,不得不服Google对于技术进步推进是全方位的,哪里都能看到它的身影。关于Google是如何推进视频编码格式技术的进步,这又是另外一个话题了,我之后写一篇博客详述(再次挖坑)。

对于使用WebRTC开发Web视频会议应用的同学,不妨试用一下AV1 Encoder,也可以给大家分享一下到底效果怎么样。

WebXR Depth API和WebXR AR Lighting Estimation

WebXR Depth API和WebXR AR Lighting Estimation都是WebXR相关的特性更新,WebXR Depth API可以用来获取用户的设备与现实环境中物体的距离,WebXR AR Lighting Estimation可以用来获取环境的光线情况。

估计绝大部分人都没用过WebXR,所以还是先了解一下WebXR是啥...

WebXR其实就是在Web上开发AR(Augmented Reality)和VR(Virtual Reality)应用的API,AR和VR都是以字母R结尾,所以就取了个XR的名字。

在WebXR Experiments,有一些WebXR的示例,可以让大家实际感受一下WebXR能干嘛。

比如,Sodar就可以用来测量2m社交距离:

640.gif

还有一个没有正式发布的示例Picturescape,看起来还挺有意思的,不过没太看懂具体是做什么的,等正式发布之后可以再看看:

640 (1).gif

从WebXR的示例来看,目前WebXR所实现的应用还比较简单,毕竟VR和AR技术本身目前的应用也比较简单粗糙。我最感兴趣的还是其在游戏领域的应用,《头号玩家》中的游戏体验什么时候可以实现呢?拭目以待!

Feature: Block HTTP port 554

Chrome 90屏蔽了554端口,这是为了缓解NAT Slipstream 2.0攻击。注意,这里用的词是缓解而不是解决,Chrome没法从根本上阻止NAT Slipstream 2.0攻击。

NAT Slipstream是去年10月底由Samy Kamkar发现的一种非常巧妙也非常危险的攻击方式,后来他又与Armis研究员Ben Seri和Gregory Vishnipolsky发现了新一版的NAT Slipstream 2.0的攻击方式。

简单来说,受害者只需要访问黑客的网站,该网站嵌入了黑客的JavaScript脚本,黑客就可以绕开受害者所在的局域网的防火墙,访问受害者所在的局域网中的任意TCP/UDP服务。

大家不妨通过NAT Slipstreaming 2.0 - Enterprise Network Bypass这个视频感受一下整个攻击流程是怎样的。

点击查看视频

受害者位于局域网中,局域网中连接的设备有受害者的智能手机、打印机、网络摄像头、打印机以及路由器,理论上局域网中的设备都是受到防火墙的保护的。而黑客位于Internet中,理论上是无法绕过防火墙直接访问局域网中的设备,比如打印机和网络摄像头。

image.png

受害者使用智能手机访问了黑客所提供的链接,攻击者成功绕过防火墙,获取打印机和网络摄像头的访问地址,远程给打印机发送打印任务,并且通过默认的账户密码远程访问网络摄像头。

如果你家的摄像头可以被黑客查看,是不是很可怕,赶紧把默认密码改了吧!

当然,如果打印机和网络摄像头都设置了比较严格的密码的话,攻击者也是没法访问它们的。所以,局域网中的设备也是必须做好安全防范的。但是这并不是重点,重点是攻击者绕过了防火墙,这又是怎么做到的呢?

Samy Kamkar的原文很长,所涉及的技术细节非常多,其实最关键的就是以下这段JavaScript代码:

// our sip message
var sipmsg = 'REGISTER sip:samy.pl;transport=TCP SIP/2.0\r\n' +
             'Contact: <sip:samy@192.168.0.109:1234;transport=TCP>\r\n\r\n'

// load form in an iframe so user doesn't see it
var iframe = document.createElement('iframe')
iframe.name = 'iframe'
iframe.style.display = 'none' // hide the iframe

// create form
var form = document.createElement('form')
form.setAttribute('target', 'iframe') // load into iframe
form.setAttribute('method', 'POST') // need the POST area where we can add CRLFs
form.setAttribute('action', 'http://samy.pl:5060') // "http" server on SIP port 5060
form.setAttribute('enctype', 'multipart/form-data') // ensure our data doesn't get encoded

var textarea = document.createElement('textarea')
textarea.setAttribute('name', 'textname') // required
textarea.innerHTML = sipmsg
form.appendChild(textarea)
document.body.appendChild(iframe)
document.body.appendChild(form)
form.submit()

这段代码,其实就是发送了一个特殊定制的POST请求,而这个POST请求由于体积过大,会被分成多个TCP包。从代码中可知,这些TCP包所请求的端口是5060,这恰好是SIP协议所使用的端口。黑客可以通过定制POST请求的大小来控制TCP包,让其中一个TCP包恰好会被NAT设备理解为SIP REGISTER包,NAT设备的ALG(Application Level Gateway)看到这个包,则会为黑客打开一个公网端口,并且转发到黑客所需要访问的内网TCP服务,代码中为192.168.0.109:1234。这样,黑客就可以通过NAT上的公网端口来访问内网服务192.168.0.109:1234。NAT设备则傻傻地帮黑客转发请求。

这种攻击方式非常有创意,涉及的技术细节非常多,我之后写一篇博客详细解释一下(又挖了一个坑)。当然,这种攻击方式也非常危险,Samy Kamkar真是个天才,还好他是白帽黑客。

Chrome屏蔽端口这种做法其实也是治标不治本,黑客确实没办法给所屏蔽端口发送请求了,但是如果受害者不更新浏览器的话,还是会被攻击。要从根本上解决这个问题,还是需要NAT设备尤其是ALG以及防火墙来想办法。

物联网时代,家里联网的设备越来越多了,作为用户,我们还是需要做好保护措施:

更新最新的Chrome浏览器;

加强局域网设备的安全保护措施,比如设置更加严格的密码;

如果不需要的话,关闭NAT设备的ALG(Application Level Gateway)功能;

避免访问未知的URL;

当然,你也可以选择断网,哈哈:(

总结

在我看来,Chrome 90最重要的更新,是默认使用HTTPS协议,其实是非常小的改动,但是还是蛮重要的。可惜这个特性还在灰度发布过程中,并没有真正发布。HTTP裸奔的时代终于快要结束了,站在现在的角度去看过去,一想到以前Web居然是基于明文传输协议的,感觉那是一个刀耕火种的时代。当然,那也是一个伟大的时代,Web的诞生本身就是一件改变人类文明的事情,我们都是幸运地站在巨人的肩膀上。如果未来量子计算机把RSA给破解了,现在的HTTPS也是裸奔。

另外,本文还介绍了AV1、WebXR以及NAT Slipstreaming相关的特性,我把重点放在了背景知识的介绍,这是因为这些特性本身对绝大多数开发者都用不到,并没有什么价值,且比较枯燥无味,不过这些关于这些特性的背景知识还是需要了解一下的,可以帮助我们更加全面的理解大前端的各个知识点以及应用场景。

我在文章后面列了非常多的参考资料,这是我读研的时候写论文养成的习惯,只要我有参考过的资料,我都会列出来,这个其实主要是为了方便我自己以后查阅,其次是分享给感兴趣的读者。其中,有一些高质量的内容我把字体加粗了,不妨重点关注一下。

在写作的过程中,我也发现了3个比较有意思的话题,是可以深入展开的,第1点是关于Chrome对于HTTPS技术推广所做的事情,第2点是关于Google推动视频编码技术进步所做的贡献,第3点是NAT Slipstreaming,后面我也会分别写博客介绍,欢迎与我交流:hanyan.lk@alibaba-inc.com 。

参考资料

  • Chrome 90 Beta: AV1 Encoder for WebRTC, New Origin Trials, and More
  • A safer default for navigation: HTTPS
  • New in Chrome 90: Overflow Clip, Permissions Policy, the Declarative Shadow DOM, and more!
  • Chrome 90 will use HTTPS (port 443) by Default - Let us discuss
  • 了不起的Chrome浏览器:Chrome 89开启Web应用的物联网时代
  • Real time communication with WebRTC
  • Get Started with WebRTC
  • Google supercharges YouTube with a custom video chip
  • Netflix Now Streaming AV1 on Android
  • Facebook turns on AV1 technology to speed up video streaming
  • 爱奇艺成为国内首家启用AV1格式的视频网站 同画质播放节省超20%流量
  • 新一代AV1编码格式,H.265的最大对手来了
  • WebXR Experiments
  • Experiment with AR and VR made for the web
  • NAT Slipstreaming v2.0
  • NAT Slipstreaming v2.0: New Attack Variant Can Expose All Internal Network Devices to The Internet
  • NAT Slipstreaming 2.0 - Enterprise Network Bypass
  • A New Attack Allows Access to any TCP/UDP service on a Machine behind NAT - NAT Slipstreaming
  • Understanding Nat Slipstreaming
  • Chrome 浏览器将屏蔽 554 端口以阻止 NAT Slipstreaming 攻击
  • Chrome 屏蔽多个 TCP 端口,以阻止 NAT Slipstreaming 攻击

image.png

相关文章
|
15天前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
29 3
|
3天前
|
缓存 安全 网络安全
HTTP/2与HTTPS在Web加速中的应用
HTTP/2与HTTPS在Web加速中的应用
|
13天前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
33 1
|
16天前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
50 4
|
15天前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
43 2
|
16天前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
17 3
|
17天前
|
存储 安全 Go
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
50 3
|
1月前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
152 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
19天前
|
SQL 安全 Go
PHP在Web开发中的安全实践与防范措施###
【10月更文挑战第22天】 本文深入探讨了PHP在Web开发中面临的主要安全挑战,包括SQL注入、XSS攻击、CSRF攻击及文件包含漏洞等,并详细阐述了针对这些风险的有效防范策略。通过具体案例分析,揭示了安全编码的重要性,以及如何结合PHP特性与最佳实践来加固Web应用的安全性。全文旨在为开发者提供实用的安全指南,帮助构建更加安全可靠的PHP Web应用。 ###
32 1
|
23天前
|
Kubernetes 安全 应用服务中间件
动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙
动态威胁场景下赋能企业安全,F5推出BIG-IP Next Web应用防火墙
43 3