购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4

协议安全分析

前面讲了HTTP的一些基本知识,现在来到重点,讲解下互联网应用的安全问题。互联网应用安全包括两部分:

◎ HTTP本身的安全问题。

◎ Web应用安全问题。

读者在理解的时候一定要注意两者之间的差异,HTTP本身是完成端到端传输的,如果没有客户端(浏览器)的运行环境,则不会造成太大的危害。而Web应用安全问题是复杂的,涉及很多知识点,本书主要讲解HTTP本身的安全问题。

1.4.1 安全问题举例

本章列举的攻击手段都非常简单,统称为中间人攻击,主要是基于HTTP弱点进行的攻击。所谓中间人就是在客户端和服务器通信之间有个无形的黑手,而对于客户端和服务器来说,根本没有意识到中间人的存在,也没有办法进行防御。

1)无线WiFi网络的攻击

互联网应用随着手机设备的增多越来越流行,而移动流量的资费非常昂贵,很多用户选择使用WiFi无线网络,尤其在户外,用户千方百计寻找免费的WiFi网络,很多攻击者会提供一些免费的WiFi,一旦连接上恶意的WiFi网络,用户将毫无隐私,尤其对于基于HTTP的应用来说。

提供WiFi网络的攻击者可以截获所有的HTTP流量,而可怕的是HTTP流量本身是明文的,攻击者用肉眼就可以知道用户的密码、银行卡信息、浏览习惯,根本不用进行任何的分析就可以获取用户的隐私。

用户并不知道自己的信息已经泄露,这种攻击方式也称为被动攻击,被动攻击其实是最可怕的。

2)垃圾广告攻击

很多用户浏览某个网页的时候,经常发现页面上弹出一个广告,而这个广告和访问的网页根本毫无关系,这种攻击很常见,主要是ISP(互联网服务提供商)发动的一个攻击,用户根本没有任何办法防护。用户访问网站的时候肯定经过ISP,ISP为了一些目的,比如获取广告费用,在响应中插入一段HTML代码,就导致了该攻击的产生。这种攻击称为主动攻击,也就是攻击者知晓攻击的存在。

这种攻击用户还能忍受,更严重的是ISP或者攻击者在页面中插入一些恶意JavaScript脚本,脚本一旦在客户端运行可能会产生更恶劣的后果,比如XSS攻击(跨站脚本攻击)。

1.4.2 协议不安全的根本原因

HTTP在设计之初根本没有考虑安全问题,它的设计目的是数据传输和共享。安全问题主要有三点原因,这三点也是安全领域的根本问题,任何基于TCP/IP的应用都会遇到,1.4.1中遇到的攻击也是因为这三个安全问题而产生的。

1)数据没有加密

HTTP本身传递的是明文,不会加密这些信息,只要攻击者能够获取这些明文,用户的隐私就完全暴露了。HTTP是基于TCP/IP的,TCP/IP的特点也决定了HTTP数据很容易被截获,网络传输过程中,路由策略决定HTTP数据会通过很多节点设备,节点很轻松就能截获明文数据,由于数据没有加密,很容易理解其含义。

读者可能认为既然HTTP没有解决加密问题,应用语言(比如PHP语言)在输出HTML数据的时候先加密然再输出不就能解决了吗?这确实是一个解决思路,但存在两个问题。

◎ HTTP数据确实加密了,但是HTTP头部却没有加密,而头部信息泄露也是安全问题之一。

◎ 应用语言可以对消息加密,但浏览器接收到消息的时候,并不知道如何解密消息,这种方案至少在Web应用上没有可行性,因为违反了HTTP标准。

2)无法验证身份

虽然TCP能够确保通信双方正确地传输数据,但是在HTTP应用中,客户端和服务器并不能确认对方的身份,在HTTP标准中,没有校验对端身份的标准。对于服务器来说,它接收的HTTP请求格式只要正确,就发送响应信息。对于客户端来说同样如此,它连接的是www.example.com主机,但由于有中间节点的存在,最终连接的可能是www.example.cn主机,但对于客户端来说,它无法校验服务器的身份。

由于通信双方无法确认对方,实现HTTP应用非常灵活,也产生了很多中间设备,比如代理服务器、网关服务器,这些中间设备对于丰富和加速HTTP网站有着巨大的作用。比如,很多公司为了加速访问HTTP网站,所有的客户端(浏览器)可以配置一个缓存代理服务器,代理服务器一般透明转发客户端的请求(也说明请求可以被修改),代理服务器接收到响应后会缓存一份数据,下一个用户如果访问同样的网址,直接可以从代理服务器缓存中获取到数据,不用访问真实的网站,这就是缓存代理服务器的作用。

这里不是想介绍代理服务器,而是说HTTP模型由于限制非常少,可以有很多的用途。而没有身份验证会出现很多安全问题,想象一下,当你还钱的时候,如果没有办法确认对方的身份,你敢把钱交给对方吗?

3)数据易篡改

HTTP数据在传输过程中,会经过很多节点,这些节点都可以修改原始数据,而对于客户端和服务器来说,没有任何技术来确保接收的数据就是发送者发送的原始数据。

由于没有机制确保数据的完整性,客户端和服务器只能无条件信任接收到的数据,这也产生了很多安全问题,篡改数据也叫作中间人攻击。比如ISP插入广告的例子,如果有一种机制能够让浏览器知晓数据已经被篡改,那么浏览器就可以告知用户危险,并中断本次请求。

HTTP安全问题主要是这三点导致的,而解决的办法就是使用HTTPS,在理解的时候,一定要明白HTTPS是如何解决这三个核心问题的。 A75ciojt+6HX1eNXFyjpOnJ+U99HmCxHkwdeGiW6ec5SXUvpU8Qv6MtG0npQqKtl

点击中间区域
呼出菜单
上一章
目录
下一章
×