大家在上网的时候观察过网址前面的符号吗? HTTP 和 HTTPS 呢, 今天小猿圈 web 前端讲师就讲一下为什么要有 HTTPS.
在 HTTP 协议中有可能存在信息窃取或身份伪装等安全问题. 使用 HTTPS 通信机制可以有效地防止这些问题.
HTTP 协议存在的哪些问题:
通信使用明文(不加密), 内容可能被窃听
由于 HTTP 本身不具备加密的功能, 所以也无法做到对通信整体 (使用 HTTP 协议通信的请求和响应的内容) 进行加密. 即, HTTP 报文使用明文 (指未经过加密的报文) 方式发送.
HTTP 明文协议的缺陷是导致数据泄露, 数据篡改, 流量劫持, 钓鱼攻击等安全问题的重要原因. HTTP 协议无法加密数据, 所有通信数据都在网络中明文 "裸奔". 通过网络的嗅探设备及一些技术手段, 就可还原 HTTP 报文内容.
无法证明报文的完整性, 所以可能遭篡改
所谓完整性是指信息的准确度. 若无法证明其完整性, 通常也就意味着无法判断信息是否准确. 由于 HTTP 协议无法证明通信的报文完整性, 因此, 在请求或响应送出之后直到对方接收之前的这段时间内, 即使请求或响应的内容遭到篡改, 也没有办法获悉. 换句话说, 没有任何办法确认, 发出的请求 / 响应和接收到的请求 / 响应是前后相同的.
不验证通信方的身份, 因此有可能遭遇伪装
HTTP 协议中的请求和响应不会对通信方进行确认. 在 HTTP 协议通信时, 由于不存在确认通信方的处理步骤, 任何人都可以发起请求. 另外, 服务器只要接收到请求, 不管对方是谁都会返回一个响应(但也仅限于发送端的 IP 地址和端口号没有被 Web 服务器设定限制访问的前提下)
HTTP 协议无法验证通信方身份, 任何人都可以伪造虚假服务器欺骗用户, 实现 "钓鱼欺诈", 用户无法察觉.
反观 HTTPS 协议, 它比 HTTP 协议相比多了以下优势(下文会详细介绍):
数据隐私性: 内容经过对称加密, 每个连接生成一个唯一的加密密钥
数据完整性: 内容传输经过完整性校验
身份认证: 第三方无法伪造服务端 (客户端) 身份
上述是小猿圈 Web 前端讲师对于为什么需要 HTTPS 的讲解, 希望对你有所帮助, 如果想学习 Web 前端的话可以到小猿圈去找视频学习 Web 前端自学2群: 738735873, 里面有更加全面的视频以及学习资料, 感觉有帮助的小伙伴可以点赞, 评论, 转发.
来源: http://www.jianshu.com/p/bd68b0c00236