HTTP协议安全性浅析
Posted 一本课外书
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议安全性浅析相关的知识,希望对你有一定的参考价值。
信息安全小课堂第二课开讲了,本节我们给大家讲一下Web应用中最基础的HTTP协议安全。
我们首先要知道,HTTP协议是TCP/IP协议簇中的一个应用层协议,HTTP协议提供了Web信息在网络中传输的数据包标准,它也是目前互联网中应用最广泛的协议。我们日常看到的所有网页都是基于HTTP协议的应用。
TCP/IP层 | OSI中的层 | 功能 | TCP/IP协议族 |
应用层 | 应用层 | Web服务,电子邮件,文件服务等 | TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等 |
表示层 | 数据格式化,代码转换,数据加密 | 没有协议 | |
会话层 | 解除或建立与别的接点的联系 | 没有协议 | |
传输层 | 传输层 | 提供端对端的接口 | TCP,UDP |
网络层 | 网络层 | 为数据包选择路由 | IP,ICMP,OSPF,EIGRP,IGMP |
链路层 | 数据链路层 | 传输有地址的帧以及错误检测功能 | SLIP,CSLIP,PPP,MTU |
物理层 | 二进制数据形式在物理媒体上传数据 | ISO2110,IEEE802,IEEE802.2 |
HTTP协议虽然是应用最广泛的协议,但仅仅是TCP/IP通信协议中的最上方一个应用层协议,所以当我们常说的“网页打不开了”,其实问题的原因有很多种,可能是应用层出了问题,也可能是传输层的问题、网络层的问题或者链路层问题等。
又或者。。。。。。是你的电脑根本没有联网?
HTTP传输信息的时候都是一个由请求和响应组成的,HTTP协议的通信过程永远是由客户端发起请求,服务器端给予响应,如下图所示:
在使用HTTP协议进行通信的时候,当我问你要个网页时,
你就给我返回一个网页。这一切看似非常完美。
但是!!
HTTP是一个明文传输协议,没有内置加密机制,而且是一个默认无状态协议!!!
也就意味着:
服务器可能并不知道HTTP请求来自谁;
服务器也不知道是否已经请求过;
也意味着你跟你的小乖乖聊的天,可能被全世界都看到了。
幸运的是,这些安全问题很早就得到了重视,并给出了很多解决方案。我们就对HTTP的两个安全缺陷的常见应对措施进行解析:
明文传输缺陷
明文传输的意思就是通过HTTP传输的数据,任何人获取到以后都可以直接解读,最大的安全风险就是信息泄露。
解决方案(1):
HTTPs(安全超文本传输协议):HTTPS严格意义上并不是一个协议,它只是在SSL(安全套接层)基础上运行HTTP协议的一个通信标准,相当于在原来的不安全的HTTP通信数据外面加一个SSL加密套。
HTTPS解决了传输过程的安全性问题,让攻击者无法再网络中进行直接嗅探信息。是一个非常实用的安全加密方案。
然而HTTP依然存在缺陷:
HTTPS并没有解决应用层的加密问题,攻击者依然可以利用服务器上的应用缺陷进行攻击。
HTTPS并不能完全保证传输的安全性,依然可能存在中间人劫持,中间人依然可以获取、修改客户端发送的信息。
比如下面这个就是正常的站点:
这个就是被劫持的站点:
大家在访问网站的时候,如果向上图一样看到浏览器提示证书错误,就要小心了,你在访问这个站点的时候,可能正在被窃听
解决方案(2):
应用层加密:应用层加密是每个应用根据自己的业务特点对数据进行加密、保证数据在传输过程中的安全性。应用层加密没有统一的标准。
应用层加密根据实际需要以及开发技术水平的不同,加密效果也会不同,比如普通的身份信息传输可以通过AES位加密就够了。但是涉及到资金交易的信息,则必须经过加随机数、加时间戳、AES加密、Hash、报文加签名等等加密操作,才能算作合格的应用加密。
无状态缺陷:
在HTTP协议中,并没有内置的跟踪HTTP会话的机制,每一次客户端发送给服务器端的请求都被当成是一个全新的请求。从而带来了重放攻击、CSRF(跨站请求)攻击等。
但是大家在使用Web应用的时候并不会感觉到无状态缺陷,比如我登录一个网站后,每次请求页面都会返回给我认证后的页面。这是因为几乎所有基于HTTP的应用都已经在代码中实现了会话跟踪机制。
而Cookie就是最常见的会话标识。
Cookie:Cookie就是在客户端访问服务器时,服务器发给客户端的“身份证”,每次客户端请求的时候,服务器端就能够根据Cookie判断是张三来请求了,还是李四来请求了。
SessionID:SessionID是Cookie的一部分,也是最核心的身份认证部分(本文以下部分我们将SessionID和Cookie等同看待)。
正是由于SessionID 对于HTTP会话来说就是一个身份证,那么当攻击者窃取了用户的SessionID,攻击者就有可能冒充用户向服务器发起请求,比如查询信息、修改信息、获取资源、转账汇款等操作。
应用开发过程中对SessionID以及其他会话信息的保护、请求过程的身份验证就是所有HTTP应用中必须要实现的安全控制功能。
Cookie的窃取利用和如何保护,是攻击和防护双方不断升级的攻防过程。而具体的攻击和防护手段较为复杂,我们稍后会针对“重放攻击”、“CSRF攻击”等攻击和防护方式进行单独的讲解,敬请期待,本文就不再详细讲述。
以上是关于HTTP协议安全性浅析的主要内容,如果未能解决你的问题,请参考以下文章