首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

漫谈HTTP/HTTPS安全-上

漫谈HTTP/HTTPS安全--上

关于HTTP安全的问题想必大家都会有所耳闻,本篇就简单的梳理一下HTTP协议都会有哪些问题以及如何解决。

相信大多数初学者在接触网络编程、接触HTTP协议的时候都会听到这样一句话:HTTP GET是不安全的,HTTP POST是安全的。而事实真的如此吗?别人为什么这么说呢?

实际上HTTP POST并不安全,但是这是相对的,要知道为什么别人说HTTP POST安全就得知道为什么HTTP GET不安全,HTTP GET请求是把各个参数拼到URL上的直接请求到服务器的,而这中间就存在一个问题,就是浏览器默认是会保存用户请求历史的,而URL上的参数也是会保存下来的,任何人都能通过历史记录查看到,而如果这里边包含敏感信息的话就很不安全了,而HTTP POST请求则不存在该问题,浏览器仅会保存请求的URL信息,不会保存POST的body里边的信息,所以这个别人是没办法通过浏览器历史记录去查看到的,而这正是为什么别人说HTTP GET是不安全的,而HTTP POST是安全的原因。

那么这样就一定安全了吗?其实上边的安全只是对于普通用户来讲的,POST信息确实不会保存到浏览器的历史记录里,但是更多的专业人士也不会通过浏览器历史记录去找这些信息,毕竟你的电脑也不是人人都能玩的,那么如何获取别人POST请求的body呢?

最简单最初级的就是抓包,让别人设置你的电脑为代理服务器(至于怎么做就得自己想了),然后你的电脑就可以监听别人的流量了,这样可以读取到别人请求的完整信息了。

那如果别人不设置你的电脑为代理服务器呢?也可以采取曲线救国的方式来达到目的,即让别人连接到你控制的路由器,比如分享出来一个无密码的热点,当别人通过你的wifi来上网时其实他所有的流量已经处于你的监控之下了,这样也可以达到与抓包相同的效果(具体做法这里不讲,有兴趣的可以自己阅读相关资料)。

如果连路由器都不是自己的都无法控制呢?其实这样也是能监听的,只不过是有局限的,你可以想想路由器的工作方式,对于你的电脑、手机来讲,路由器仅有一个,是唯一的可以确认的,但是对于路由器来讲,他是有多个连接的,这并不是唯一的,而且大多数路由器也并不区分客户端,也就是路由器会把本应发给你的信息发给所有客户端,那么问题来了,本来给你的信息结果给了所有人,那其他人岂不是也都知道你的信息了?但是我平时使用的时候好像并没有发现有别人的信息啊?上边都是对的,首先,别人都是能接收到你的信息的,但是由于底层驱动发现该数据不是你的(通过TCP协议确定的)就自动把这个数据包给丢弃了,也就是说,如果你自己实现一个驱动,当收到这样的数据包时并不丢弃而是自己读取,那么别人的信息就不安全了(linux大多数系统是支持该模式的)。

所以,出门在外尽量不要连接公共wifi,你不知道这个wifi是否被人监听,是否安全。

可以看出,以上问题都是因为你没办法直接连接到服务器、有了匿名中转设备导致的,一般称这种攻击方式为中间人攻击,是一种常见的网络攻击手段(不限于对HTTP/HTTPS协议的攻击,本篇只讲HTTP/HTTPS),既然存在这种攻击方式,那么如果保证HTTP通讯安全呢?

首先分析上边的攻击方式,可以看出虽然你没有用GET而用了POST,但是别人仍然能够通过中间人攻击来达到读取你请求内容的目的,那么如果我的请求内容是加密的呢?对,我们可以将请求内容加密。

加密方式有很多,关于加密的知识大家可以自行阅读资料了解,这里不详写。既然要加密,那么如何加密呢?采用什么方式加密以及加密过程中都面临哪些问题呢?这个我们留到下一篇来讲。

不要错过

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180224G0GXQ400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券