HTTP协议安全性浅析

Posted 一本课外书

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议安全性浅析相关的知识,希望对你有一定的参考价值。

信息安全小课堂第二课开讲了,本节我们给大家讲一下Web应用中最基础的HTTP协议安全。

我们首先要知道,HTTP协议是TCP/IP协议簇中的一个应用层协议,HTTP协议提供了Web信息在网络中传输的数据包标准,它也是目前互联网中应用最广泛的协议。我们日常看到的所有网页都是基于HTTP协议的应用。

TCP/IP OSI中的层 功能 TCP/IP协议族
应用层 应用层 Web服务,电子邮件,文件服务等 TFTPHTTPSNMPFTPSMTPDNSTelnet 
表示层 数据格式化,代码转换,数据加密 没有协议
会话层 解除或建立与别的接点的联系 没有协议
传输层 传输层 提供端对端的接口 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协议安全性浅析

HTTP是一个明文传输协议,没有内置加密机制,而且是一个默认无状态协议!!!

也就意味着:

  • 服务器可能并不知道HTTP请求来自谁;

  • 服务器也不知道是否已经请求过;

  • 也意味着你跟你的小乖乖聊的天,可能被全世界都看到了。

幸运的是,这些安全问题很早就得到了重视,并给出了很多解决方案。我们就对HTTP的两个安全缺陷的常见应对措施进行解析:




明文传输缺陷

明文传输的意思就是通过HTTP传输的数据,任何人获取到以后都可以直接解读,最大的安全风险就是信息泄露。

HTTP协议安全性浅析


解决方案(1):

  • HTTPs(安全超文本传输协议):HTTPS严格意义上并不是一个协议,它只是在SSL(安全套接层)基础上运行HTTP协议的一个通信标准,相当于在原来的不安全的HTTP通信数据外面加一个SSL加密套。

  • HTTPS解决了传输过程的安全性问题,让攻击者无法再网络中进行直接嗅探信息。是一个非常实用的安全加密方案。

然而HTTP依然存在缺陷:

    • HTTPS并没有解决应用层的加密问题,攻击者依然可以利用服务器上的应用缺陷进行攻击。

    • HTTPS并不能完全保证传输的安全性,依然可能存在中间人劫持,中间人依然可以获取、修改客户端发送的信息。

比如下面这个就是正常的站点:

HTTP协议安全性浅析

这个就是被劫持的站点:

大家在访问网站的时候,如果向上图一样看到浏览器提示证书错误,就要小心了,你在访问这个站点的时候,可能正在被窃听


解决方案(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协议安全性浅析的主要内容,如果未能解决你的问题,请参考以下文章

浅析https

HTTPS原理浅析

CDN快讯阿里云对HTTP/3新一代网络传输协议QUIC浅析

协议分析|HTTP协议浅析

HTTP协议浅析(下): 使用HTTP协议实现通信

HTTP协议交互过程及内容格式浅析