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