12. HTTPS协议详解

一、前言

现在如果你想要自己建一个网站,那么我相信你不可避免的会接触到https协议。

https协议和http协议的作用其实是一样的,用于客户端与浏览器中间收发数据。

唯一的区别在于httpshttp多了一个s,也就是安全层(secure)。

不理解http协议的可以参考文章:手写一个WebServer

二、http缺陷

从http的原理我们可以明白这么一个事实:客户端与服务器之间是直接通过套接字收发数据的。

同时一个ip地址发送到另一个ip地址,一般其中间都会经过许多中继点。

不理解的可以参考文章:网络编程详解

比如身处四川的你在电脑上发送一条数据给北京的某个服务器,你发生的数据可能就会经由你家的路由器、然后是中间无数的网络节点、最终到达北京的服务器。

此时只要有人在这条线路之间进行网络数据监视,便能够轻松获得你发送给服务器的数据。

graph LR
A[A]-- 数据-->B[B]
B[B]-- 数据-->C[C]

比如上图中A想要发送给C数据,很多时候就不得不经由B去转发,那么B自然能够轻易获取到A发送给C的数据了。

这便是http问题之一的数据泄露,一旦其中包含一些隐秘的数据,甚至可能造成资金损失。

然后再试想一下,虽然A确实将数据往C发了,但中间的B完全可以不继续转发,而是直接给你返回一个伪造的数据:

graph LR
A[A]-- 数据-->B[B]
B[B]-- 返回伪造数据-->A[A]
B[B]--X-->C[C]

这便是网络劫持,早期的互联网因为大量使用的http协议,就导致了相当多的网站被黑客劫持。

比如你明明输入的是QQ官方网址,可访问进去一看却是黄赌毒之类的网页,这种情况一般就是该网站被劫持了。

三、https原理

为了解决上面两个、以及更多的问题,http协议就引入了一个安全层(Secure)。

换句话来说,就相当于这个等式:https=http+SSL/TLS

作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux