更新时间:2018-07-24 来源:黑马程序员 浏览量:
在web开发学习中,我们会很频繁的接触到HTTP这个协议。从概念上来说,超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。通俗来讲,HTTP就是浏览器和服务器进行交互数据时,双方都要遵守的数据格式规范。
举个例子:
两个人写信,需要都遵守一些规则才能互相看懂对方的意思——开头是对方称呼,结尾是自己的落款,否则数据格式就乱套了,写的信谁也看不懂写的是什么。
而HTTPS又是什么呢,其实HTTPS就是在HTTP的基础上加了个S,也就是“Secure”,即安全。我们知道,HTTP协议本身是没有任何安全考虑的,数据以明文传输,GET方式传递的参数甚至直接就在地址栏上显示出来,即使使用其他方式传参,也能很轻易的就把数据抓包获取到,让一些心怀不轨的人所利用,甚至伪造请求发送一些假数据,所以HTTP的年代,大家都在自己想办法解决数据安全问题,自己加密或者添加校验等,而HTTPS就是用来从根本上解决这个问题的。那么今天我们主要聊一聊 HTTPS 到底安全在哪。
从上图可以看到,HTTPS 就是在 HTTP 下加入了 SSL 层,从而保护了交换数据隐私和完整性,提供对网站服务器身份认证的功能,所以简单来说它就是安全版的 HTTP。
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。现在随着技术的发展,TLS 得到了广泛的应用,关于 SSL 与 TLS 的差别,我们不用在意,只要知道 TLS 是 SSL 的升级版本就好。
一般来说,HTTPS 主要用途有三个:
一是通过证书等信息确认网站的真实性;
二是建立加密的信息通道;
三是数据内容的完整性。
上图就是一个HTTPS的链接打开后的样子,我们可以通过点击浏览器地址栏锁标志来查看网站认证之后的真实信息,SSL证书保证了网站的唯一性与真实性。
那么加密的信息通道又加密了哪些信息呢?
签发证书的 CA 中心会发布一种权威性的电子文档——数字证书,它可以通过加密技术(对称加密与非对称加密)对我们在网上传输的信息进行加密,比如我在 网站 上输入:
账号:cbssfaw
密码:123djaosid
可是这个数据被黑客拦截盗窃了,那么加密后,黑客得到的数据可能就是这样的:
账号:)》﹝'!#﹡﹡
密码:$﹩¯﹔〈〉"“
最后一个就是验证数据的完整性,当数据包经过无数次路由器转发后会发生数据劫持,黑客将数据劫持后进行篡改,比如植入木马。开启HTTPS后黑客就无法对数据进行篡改,就算真的被篡改了,我们也可以检测出问题。
而加密方式分为对称加密和非对称加密两种。
对称加密是指加密与解密的使用同一个密钥的加密算法。目前常见的加密算法有:DES、AES、IDEA 等。
非对称加密使用的是两个密钥,公钥与私钥,我们会使用公钥对网站账号密码等数据进行加密,再用私钥对数据进行解密。这个公钥会发给查看网站的所有人,而私钥是只有网站服务器自己拥有的。目前常见非对称加密算法:RSA,DSA,DH等。 简单的总结一下:
HTTPS和HTTP的区别主要为以下四点:
一、https协议需要到ca申请证书,一般免费证书很少,需要交费。所以现在虽然都在提倡使用HTTPS而淘汰掉HTTP,但是还是有大量的网站由于成本问题,或者数据传输不是那么敏感,所以依旧使用HTTP作为传输协议。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。这个在我们服务器端编程的时候比较重要,因为我们习惯把默认端口设置为80来监听HTTP很久了,所以如果使用了HTTPS的话,要扭转一下观念,不要习惯性的使用80端口了。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
通过上文,我们已经知道,HTTPS 就是在 HTTP 传输协议的基础上对网站进行认证,给予它独一无二的身份证明,再对网站数据进行加密,并对传输的数据进行完整性验证。HTTPS 作为一种加密手段不仅加密了数据,还给了网站一张身份证。 总之,HTTPS从各个角度去考虑了怎么让数据传输更安全的问题,这个“S”添加的当之无愧。现在,大家对HTTPS和HTTP的区别有了明确的认识了吧。