HTTP(超文本传输协议)
起源:HTTP由蒂姆·伯纳斯 - 李(Tim Berners - Lee)于1989年发明,其设计目的是为了在互联网上实现文档的共享与传输。它是万维网(World Wide Web)的核心协议,让用户能够通过链接在不同的文档之间进行跳转浏览。
设计初衷:HTTP被设计成一种简单、无状态的协议。所谓无状态,就是指服务器在处理客户端请求时,不会保留之前请求的相关信息。这样的设计使得HTTP实现起来相对容易,能够高效地处理大量的并发请求,非常适合早期以静态页面为主的网页浏览场景。
HTTPS(超文本传输安全协议)
起源:随着互联网的不断发展,电子商务、在线支付等需要传输敏感信息的应用场景逐渐增多,HTTP的安全性不足问题日益凸显。于是,网景公司(Netscape)在1994年推出了SSL(安全套接层)协议,后来该协议演变成了TLS(传输层安全)协议,HTTPS也由此诞生,它通过加密和身份验证解决了HTTP的安全隐患。
HTTPS比HTTP更安全的原因
-
数据加密
- 对称加密与非对称加密结合:HTTPS在数据传输过程中,同时运用了对称加密和非对称加密两种方式。在建立连接的初始阶段,客户端和服务器会通过非对称加密(使用RSA或ECDHE算法)来交换一个会话密钥。这个会话密钥是随机生成的,并且只在当前的会话中使用。之后,双方就会使用这个会话密钥通过对称加密(如AES算法)来加密传输的数据。这种结合方式既保证了密钥交换的安全性,又提高了数据传输的效率。
- 防止窃听:经过加密处理后,即使数据在传输过程中被截取,攻击者由于没有相应的密钥,也无法解读其中的内容。
-
身份验证
- SSL/TLS证书:服务器需要向受信任的证书颁发机构(CA)申请SSL/TLS证书,该证书中包含了服务器的公钥以及服务器的相关身份信息。客户端在与服务器建立连接时,会验证证书的有效性,包括证书是否由可信的CA颁发、证书是否在有效期内以及证书中的域名是否与实际访问的域名一致等。通过这种方式,客户端能够确认自己确实是在与目标服务器进行通信,从而有效防止中间人攻击。
-
完整性保护
- 消息认证码(MAC):HTTPS会对传输的数据添加消息认证码,接收方在收到数据后,会通过计算MAC来验证数据在传输过程中是否被篡改。如果数据被篡改,MAC验证将失败,接收方就会知道数据已经不可信。
主要区别
对比项 | HTTP | HTTPS |
---|---|---|
端口 | 默认使用80端口 | 默认使用443端口 |
安全性 | 数据以明文形式传输,安全性较低 | 数据经过加密处理,安全性较高 |
证书 | 无需SSL/TLS证书 | 必须配置SSL/TLS证书 |
URL前缀 | 以http:// 开头 | 以https:// 开头 |
搜索引擎优化 | 搜索引擎对其排名较低 | 搜索引擎对其排名较高 |
前端开发中的影响
- 混合内容问题:如果在HTTPS页面中引入了HTTP资源,浏览器会将其标记为“混合内容”,这可能会导致资源加载失败或者出现安全警告。
- Cookie安全:在设置Cookie时,可以通过添加
Secure
属性,确保Cookie只能通过HTTPS连接进行传输,从而提高Cookie的安全性。 - API访问限制:浏览器的同源策略对HTTPS页面访问HTTP API进行了限制,通常情况下是不允许这样访问的。
总结
在实际的Web开发工作中,为了保障用户数据的安全,建议优先使用HTTPS协议。特别是在处理用户敏感信息时,HTTPS更是必不可少的选择。现在,包括Chrome在内的主流浏览器,都会将HTTP网站标记为“不安全”,而且HTTPS已经成为了SEO排名的重要考量因素之一。