前言
目前绝大多数网站都已经切换到了https,切换的原因很简单,因为它更安全,https未来会完全取代http,本文从https与http的简介了了解http为什么不安全以及https为什么安全。
一、https和http
HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,是Web上数据交换的基础。HTTP是一个无状态的协议,即服务器不会在两个请求之间保留任何数据。它是建立在TCP/IP协议之上的。
HTTPS(Hypertext Transfer Protocol Secure)是HTTP的安全版本,通过在HTTP和TCP之间加入SSL/TLS协议来加密数据传输。HTTPS的加密机制可以确保数据在传输过程中不被窃取或篡改,因此更适合用于传输敏感信息,如个人信息、银行信息等。
总的来说,HTTP是一种用于传输超文本的协议,而HTTPS是对HTTP的加密和安全扩展。在网站安全性要求较高的情况下,通常会采用HTTPS协议来保护数据传输的安全。
二、http为什么不安全?
要了解http为什么不安全,首先要明白http的基础工作原理。
2.1 http的工作原理
在手机或电脑进行http请求的时候,实际上是浏览器或其他应用程序将一个http的请求报文发送到了服务器。
服务器收到这个请求报文之后,去处理,处理之后,返回一个响应报文。
但是这个请求是怎么到达对方服务器的呢?
在实际的网络中,我们的消息会经过很多的中间节点,比如我们的路由器、小区的网关等等,这些节点会以接力的形式帮我们一步步转发消息,一步步的让消息到达目标服务器。
最终服务器才接收到这个消息并进行处理。
那么中间的转发者又是怎么转发这些消息的呢?
如果它能够原封不动的发送到下一节点,那么一切都很顺利,但是如果它篡改了我们发送的消息呢,那不就坏事了!
其实不只是篡改,单纯的窃听也很有风险,比如我们在发送自己的账号密码到服务器上时,路上的每一个节点都能看到,这是不是很危险?而且不只是中间节点,网络中的其他节点也是可以对消息进行监听的。
所以网络从本质上就不可避免地会让别人看到我们发送和接受的信息。这个是http不安全的原因之一。但是总不能因为这个把整个网络结构改了吧?
这就涉及到http不安全的另一个原因:明文传输
2.2 http的明文传输
所谓明文传输就是将消息内容不做任何修饰加工就直接传输。与之对应的一个概念就是加密。
三、https
3.1 加密
https就是通过加密来让消息变得安全。https把http消息进行加密之后再传送,这样别人就算拿到之后也看不懂,这样就做到了安全!
具体来说,https是通过对称加密、非对称加密、哈希算法共同作用来在性能和安全性上达到一个平衡。
加密是会影响传输性能的,尤其是非对称加密,因为它的算法比较复杂。
3.2 身份验证
光是加密就确保安全了吗?https不仅对消息进行了加密,而且对通信对象进行了身份验证。
如果我要访问www.xxx.com,需要知道我的访问对象确定是目标xxx.com而不是被拦截了网络请求然后被转移到一个其他的地址,这种拦截在http里是可以做到的,你有没有在浏览器中输入想要的网站,但是页面加载过程中突然被转移到了一个其他冒红点的其他网站,这就是被拦截到其他地址去了。
但是https引入了证书机制,通过证书链可以对访问对象进行身份验证,能够保证你所访问的对象一定是你认为的那个对象。
不然浏览器就会警告提醒,而在代码开发中,会报异常。
那么直接在http上实现加密、证书机制不就得了嘛?为什么还要引出一个新的https呢?毕竟一个新的东西涉及到兼容性、大众接受度、换代周期等等。
事实上,https也的确是这么做的,
https并不是一种新的协议,它使用了一种TLS(Transport Layer Security)传输层安全性协议,这个安全提提供了数据加密的支持,让http消息运行在这个安全层上就达到了安全,而运行在这个安全层上面的http,就叫做https,htttp Security。
四、总结
看完上面内容,相信会对https和http有一个较深的理解了,但是加密过程中的对称加密、非对称加密、哈希算法,以及证书机制在这里并未深入讲到,后续再写一篇吧,一口气吃不成个大胖子。