近些年,随着域名劫持、信息泄漏等网络安全事件的频繁发生,网站安全也变得越来越重要,也促成了网络传输协议从 HTTP 到 HTTPS 再到 HSTS 的转变。
HTTP(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是互联网数据通信的基础。它是由万维网协会(W3C)和互联网工程任务组(IETF)进行协调制定了 HTTP 的标准,最终发布了一系列的 RFC,并且在 1999 年 6 月公布的 RFC 2616,定义了 HTTP 协议中现今广泛使用的一个版本——HTTP 1.1。
HTTP 属于 TCP/IP 模型中的应用层协议,当浏览器与服务器进行互相通信时,需要先建立 TCP 连接,之后服务器才会接收浏览器的请求信息,当接收到信息之后,服务器返回相应的信息。最后浏览器接受对服务器的信息应答后,对这些数据进行解释执行。
△http 1.0 请求模式
HTTP 1.0 时,浏览器每次访问都要单独建立连接,这会造成资源的浪费。
后来 HTTP 1.1 可以在一次连接中处理多个请求,并且将多个请求重叠进行
△http 1.1 请求模式
HTTP 协议由于其简单快速、占用资源少,一直被用于网站服务器和浏览器之间进行数据传输。但是在数据传输的过程中也存在很明显的问题,由于 HTTP 是明文协议,不会对数据进行任何方式的加密。当黑客攻击窃取了网站服务器和浏览器之间的传输报文的时,可以直接读取传输的信息,造成网站、用户资料的泄密。因此 HTTP 不适用于敏感信息的传播,这个时候需要引入 HTTPS(超文本传输安全协议)。
HTTPS(Hypertext Transfer Protocol Secure)是一种以计算机网络安全通信为目的的传输协议。在 HTTP 下加入了 SSL 层,从而具有了保护交换数据隐私和完整性和提供对网站服务器身份认证的功能,简单来说它就是安全版的 HTTP。
△ HTTP、HTTPS 差异
HTTPS 在进行数据传输之前会与网站服务器和 Web 浏览器进行一次握手,在握手时确定双方的加密密码信息。
具体过程如下:
△ Chrome 浏览器 HTTPS 安全标识
当网站服务器接收到浏览器发送过来的数据后,会使用网站本身的私钥将信息解密确定密码,然后通过密码解密 Web 浏览器发送过来的握手信息,并验证哈希是否与 Web 浏览器一致。然后服务器会使用密码加密新的握手信息,发送给浏览器;
最后浏览器解密并计算经过哈希算法加密的握手消息,如果与服务发送过来的哈希一致,则此握手过程结束后,服务器与浏览器会使用之前浏览器生成的随机密码和对称加密算法进行加密交换数据。
△ HTTPS 握手过程
为了保护数据的安全,HTTPS 运用了诸多加密算法:
例如:DES、AES-GCM、ChaCha20-Poly1305 等。
例如:RSA、DSA、ECDSA、DH、ECDHE 等。
例如:MD5、SHA-1、SHA-2、SHA-256 等。
但是当网站传输协议从 HTTP 到 HTTPS 之后,数据传输真的安全了吗?
由于用户习惯,通常准备访问某个网站时,在浏览器中只会输入一个域名,而不会在域名前面加上 http:// 或者 https://,而是由浏览器自动填充,当前所有浏览器默认填充的都是http://。一般情况网站管理员会采用了 301/302 跳转的方式由 HTTP 跳转到 HTTPS,但是这个过程总使用到 HTTP 因此容易发生劫持,受到第三方的攻击。
这个时候就需要用到 HSTS(HTTP 严格安全传输)。
△ HTTP 请求劫持 H
HSTS 是国际互联网工程组织 IETF 正在推行一种新的 Web 安全协议,网站采用 HSTS 后,用户访问时无需手动在地址栏中输入 HTTPS,浏览器会自动采用 HTTPS 访问网站地址,从而保证用户始终访问到网站的加密链接,保护数据传输安全。
HSTS 主要是通过服务器发送响应头的方式来控制浏览器操作:
Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload] 此响应头只有在 https 访问返回时才生效,其中 [ ] 中的参数表示可选;
设置 max-age 参数,时间设置不宜过长,建议设置时间为 6 个月;
当用户下次使用 HTTP 访问,客户端就会进行内部跳转,并且能够看到 307 Redirect Internel 的响应码;
网站服务器变成了 HTTPS 访问源服务器。
开启 HSTS 后网站可以有效防范中间人的攻击,同时也会省去网站 301/302 跳转花费的时间,大大提升安全系数和用户体验。
开启 HSTS 以后,可以到 ssllabs 进行测试,网站的安全等级会进一步提升。
开启前等级为:A
开启后等级变为:A+
从 HTTP 到 HTTPS 再到 HSTS,网站的安全系数一直在上升,防止 DNS 劫持、数据泄密的力度也再加大。国内公有云服务商比如又拍云提供了完整的 HTTPS 和 HSTS 的解决方案,不仅支持 SSL 证书快速申请,HTTPS 一键部署,还支持一键开启 HSTS,感兴趣的同学可以前往又拍云官网了解。
HTTPS 原理详解 减少网站跳转时间,增强网站数据安全——HSTS 详解 HTTP 请求流程(一)----流程简介 HTTP 协议详解