最近我在做前端面试题总结系列,感兴趣的朋友可以添加关注,欢迎指正、交流。
争取每个知识点能够多总结一些,至少要做到在面试时,针对每个知识点都可以侃起来,不至于哑火。
前言
通过前面内容的学习,相信大家对 HTTP 的概念、特点、请求方法及缓存等的相关知识有了一定了解,恭喜大家在面试成功的道路上迈出了坚实的一步!
HTTP 从诞生之初到现在,已经好多年了,可以称得上是“历史悠久”了。中间经历过几次大的版本更新,依然坚挺如初。
但是不管再怎么坚挺,跟人们需求的发展速度相比,却稍显逊色,比如很常见的一个需求:我使用网上银行就行转账或者支付,怎么保证我的用户信息(包括密码)不会被泄漏?
由于 HTTP 协议传输的是明文信息,如果在支付过程中发出的 HTTP 请求被攻击者截取到,那么此请求所携带的用户信息对攻击者来说是可见的,可能会带来严重的安全隐患。
显然,要解决这个问题,并不是对 HTTP 协议进行简单的属性添加就可以实现的,在这种状况下,我们今天的主人公 —— HTTPS 就应运而生。
HTTPS
超文本传输安全协议,英语全称为 HyperText Transfer Protocol Secure,缩写叫做 HTTPS,有常被称为 HTTP over TLS、HTTP over SSL 或 HTTP Secure。
还记得吗?HTTP 叫做超文本传输协议,对比 HTTPS 的中文全称,我们就大概可以知道二者的区别了。
HTTPS 是一种通过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。这个协议由网景公司(Netscape)在 1994 年首次提出,随后扩展到互联网上。
严格地讲,HTTPS 并不是一个单独的协议,而是对工作在一加密连接(TLS 传输层安全)或 SSL)上的常规 HTTP 协议的称呼。
历史上,HTTPS 连接经常用于万维网上的交易支付和企业信息系统中敏感信息的传输。在 2000 年代末至 2010 年代初,HTTPS 开始广泛使用,以确保各类型的网页真实,保护账户和保持用户通信,身份和网络浏览的私密性。所以,我们现在见到的大多数应用网站都实现了 HTTPS 协议。
作用
HTTPS 的主要作用是在不安全的网络上创建一个安全信道,并可在使用适当的加密包和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的防护,其具体作用如下:
- 数据保密性:保证数据内容在传输的过程中不会被第三方查看。就像快递员传递包裹一样,都进行了封装,别人无法获知里面装了什么 。
- 数据完整性:及时发现被第三方篡改的传输内容。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收 。
- 身份校验安全性:保证数据到达用户期望的目的地。就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方,通过身份校验来确保送对了地方 。
总结起来一句话:HTTPS 提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
工作流程
HTTPS 默认工作在 TCP 协议 443 端口,它的工作流程一般如以下图所示:
- TCP 三次同步握手。
- 客户端验证服务器数字证书。
- DH 算法协商对称加密算法的密钥、hash 算法的密钥。
- SSL 安全加密隧道协商完成。
- 网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。
优点
尽管 HTTPS 并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但 HTTPS 仍是现行架构下最安全的解决方案,主要有以下几个好处:
- 使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器。
- HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 HTTP 协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
- HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
- 谷歌曾在 2014 年 8 月份调整搜索引擎算法,并称“比起同等 HTTP 网站,采用 HTTPS 加密的网站在搜索结果中的排名将会更高”。
缺点
虽然说 HTTPS 有很大的优势,但其相对来说,还是存在不足之处的:
- HTTPS 协议握手阶段比较费时,会使页面的加载时间延长近 50%,增加 10% 到2 0% 的耗电。
- HTTPS 连接缓存不如 HTTP 高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响。
- SSL 证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
- SSL 证书通常需要绑定 IP,不能在同一 IP 上绑定多个域名,IPv4 资源不可能支撑这个消耗。
- HTTPS 协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL 证书的信用链体系并不安全,特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。
总结
以上就是对 HTTPS 的一些概述内容,希望对你有所帮助!
~
~本文完,感谢阅读!
~
学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂!
大家好,我是〖编程三昧〗的作者 隐逸王,我的公众号是『编程三昧』,欢迎关注,希望大家多多指教!
你来,怀揣期望,我有墨香相迎! 你归,无论得失,唯以余韵相赠!
知识与技能并重,内力和外功兼修,理论和实践两手都要抓、两手都要硬!