HTTP和HTTPS那些事

HTTP中的请求:

GET和POST区别:

• GET在浏览器回退时是无害的,而POST会再次提交请求。

• GET产生的URL地址可以被Bookmark,而POST不可以。

• GET请求会被浏览器主动cache,而POST不会,除非手动设置。

• GET请求只能进行url编码,而POST支持多种编码方式。

• GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

• GET请求在URL中传送的参数是有长度限制的,而POST么有。

• 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

• GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

• GET参数通过URL传递,POST放在Request body中。
• GET产生一个TCP数据包;POST产生两个TCP数据包。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
注:post请求只是看似比get请求更加安全,但其实都不安全,因为是http协议,第三方可以对请求进行抓包,下分析安全协议https。

HTTPS加密:

http不安全是因为协议的本质中没有加入安全的算法,即未能对通信的双方进行身份识别,故加入加密算法。而密钥分为:对称秘钥和非对称密钥

对称密钥:
 公钥和私钥是相同的,即加密与解密用同一套算法。优点:解密简单,传输速度快。缺点:公钥以明文传输,被获取后,等于没加密。
非对称密钥:
 公钥和私钥相反,通过其中一个加密,只能通过另一个解密。优点:绝对的安全。缺点:通信速率底下,因为加解密过程十分复杂。

故https需要在不影响高效通信的条件下,保证绝对的安全,采用混合加密算法:

构想:
       通信开始前,服务端有非对称密钥k1、k2,浏览器端有对称密钥k,目的是为了让浏览器端把k传且仅传给服务端。这之后的通信可以用对称密钥,即保证通信效率,又保证安全性。

在这里插入图片描述
不难发现,这里会有个问题,如果中间还是有人而已截取会不会有安全隐患?答案是有的——MITM(中间人攻击):
在这里插入图片描述

解决办法:这是因为恶意中间人实施了两头诈骗的办法,故https中还有一个CA证书的要求,即服务端选择可信的公证人,将自己的公钥放在公证人的证书中发出,从而使浏览器端可判断来源是否是可靠的服务端。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值