Http

2019-12-10  本文已影响0人  陈星空

1. http和https

使用http的缺点

为了应对http存在的缺点,可以使用加密的方式,目前存在两种加密的方式:
一,对通信加密。http协议中没有加密机制,但可以通过SSL(Secure Socket Layer,安全套接层)和TLS(Transport Layer Security,安全层传输协议)组合使用,加密http的通信内容。
用SSL建立安全通信的线路之后,就可以在这条线路上进行http通信。与SSL组合使用的http被称为https(http Secure,超文本传输安全协议)。
二,对内容进行加密。由于http协议中没有加密机制,那么就对http协议传输的内容本身加密,这种情况下,客户端需要对http报文进行加密处理后再发送请求。诚然做到了有效的内容加密,但要求客户端和服务器端要同时具备加密和解密机制。另外有一点需要注意,由于该方式不同于SSL或TLS将整个通信线路加密处理,所以内容仍有被篡改的风险。

所以以上两种方式中,更好的是第一种方式!

http加上加密处理和认证以及完整性保护后即是https;
http+加密+认证+完整性保护=https

https并非是应用层的一种新协议,只是http通信接口部分用SSL和TLS协议代替而已。
通常,http直接和tcp通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。简言之,所谓https,其实就是身披SSL协议这层外壳的http。


image.png

在采用SSL后,http就拥有了https的加密、证书和完整性保护这些功能。SSL是独立于http的协议,所以不光是http协议,其他运行在应用层的smtp和telnet等协议均可配合SSL协议使用。可以说SSL是当今世界上应用最为广泛的网络安全技术。

https安全通信机制

步骤1:客户端通过发送Client Hello报文开始SSL通信。报文中包含客户端支持的SSL的制定版本、加密组件(Cipher Suite)列表(所使用的加密算法及密钥长度等)。
步骤2:服务器可进行SSL通信时,会以Server Hello报文作为应答。和客户端一样,在报文中包含SSL版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。
步骤3:之后服务器发送Certificate报文。报文中包含公开密钥证书。
步骤4:最后服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束。
步骤5:SSL第一次握手结束之后,客户端以Client Key Exchange报文作为回应。报文中包含通信加密中使用的一种被称为Pre-master secret的随机密码串。该报文已用步骤3中的公开密钥进行加密。
步骤6:接着客户端继续发送Change Cipher Spec报文。该报文会提示服务器,在此报文之后的通信会采用Pre-master secret密钥加密。
步骤7:客户端发送Finished报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。
步骤8:服务器同样发送Change Cipher Spec报文。
步骤9:服务器同样发送Finished报文。
步骤10:服务器和客户端的Finished报文交换完毕之后,SSL连接就算建立完成。当然,通信会受到SSL的保护。从此处开始进行应用层协议的通信,即发送http请求。
步骤11:应用层协议通信,即发送http响应。
步骤12:最后由客户端断开连接。断开连接时,发送close_notify报文。上图做了一些省略,这步之后再发送TCP FIN报文来关闭TCP的通信。

http使用SSL(Secure Socket Layer)和TLS(Transport Layer Security)这两个协议。IETF(Internet Engineering Task Force,Internet工程任务组)以SSL3.0为基准,后又制定了TLS1.0、TLS1.1和TLS1.2。TLS是以SSL为原型开发的协议,有时会统一称该协议为SSL。当前主流的版本时SSL3.0和TLS1.0。(SSL1.0协议在设计之初就发现问题,没有投入使用。SSL2.0也被发现存在问题,所以很多浏览器直接废除了该协议版本)。

基于http的功能追加协议

虽然http协议简单又便捷,但随着时代的发展,也有更多新的技术需求和协议作为补充,比如WebSocket协议和WebDAV

在以往由于http协议本身的限制,每次会话,连接只能从客户端发起,然后服务器响应这样一问一答的形式出现,对于比如facebook ,微博这种需要及时更新的网站,就需要不断的发起请求,接收响应。
Ajax是一种有效利用JavaScript和DOM的操作,以达到局部Web页面替换加载的异步通信手段。Ajax的核心技术是名为XMLHttpRequest的API,通过脚本语言进行http通信,但这也会导致大量请求不能解决根本问题;
Comet是另一种方法,一旦服务器内容有更新,Comet不会让请求等待,直接给客户端响应。这是一种延迟应答,模拟实现服务器想客户端推送的功能,服务端接收到请求,处理完毕返回响应,为了模拟,Comet先将响应置于挂起状态,当服务器有更新是就返回,这样导致一次http请求的连接时间变长,维持连接可能会损耗更多的资源。
随后WebSocket网络技术应运而生:使用浏览器进行全双工通信。
步骤:

  1. 在http连接建立后,需要完成一次”握手“的步骤
image.png
image.png
  1. 成功握手确立WebSocket连接后,通信不再使用http的数据帧,而采用WebSocket独立的数据帧,其首部信息很小,通信量也响应减少。

WebSocket通信流程图

image.png
  • http1.1扩展后的WebDAV
    集合:是一种统一管理多个资源的概念。以集合为单位可进行各种操作。也可实现类似集合的集合这样的叠加
    资源:把文件或集合称为资源
    属性:定义资源的属性。定义以“名称=值”的格式执行
    锁:把文件设置成无法编辑状态。多人同时编辑时,可防止在同一时间进行内容写入
    image.png

Web的攻击技术

主动攻击是指攻击者通过直接访问Web应用,把攻击代码传入的攻击模式。由于该模式是直接针对服务器上的资源进行攻击,因此攻击者需要能够访问到那些资源。
主动攻击模式里具有代表性的攻击时SQL注入攻击和OS命令命令注入攻击。


image.png
image.png
攻击模式如下
步骤1:攻击者诱使用户触发已设置好的陷阱,而陷阱会启动发送已嵌入攻击代码的http请求;
步骤2:当用户不知不觉中招之后,用户的浏览器或邮件客户端就会触发这个陷阱;
步骤3:中招后的用户浏览器会把含有攻击代码的http请求发送给作为攻击目标的Web应用,运行攻击代码;
步骤4:执行完攻击代码,存在安全漏洞的Web应用会成为攻击者的跳板,可能导致用户所持的Cookie等个人信息被窃取,登录状态中的用户权限遭恶意滥用等后果。
被动攻击模式中具有代表性的攻击时跨站脚本攻击和跨站点请求伪造。
image.png

因输出值转义不完全引发的安全漏洞

是指通过存在安全漏洞的Web网站注册用户的浏览器运行非法的HTML标签或JavaScript进行的一种攻击。动态创建的HTML部分有可能隐藏着安全漏洞。就这样,攻击者编写脚本设下陷阱,用户在自己的浏览器上运行时,一不小心就会受到被动攻击。
跨站脚本攻击有可能造成以下影响:
(1)利用虚假输入表单骗取用户个人信息
(2)利用脚本窃取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求
(3)显示伪造的文章或图片
例子

image.png

会执行非法SQL的SQL注入攻击
SQL注入是指针对Web应用使用的数据库,如果在调用SQL语句的方式上存在疏漏,就有可能执行被恶意注入非法SQL语句,通过运行非法的SQL而产生的攻击。该安全隐患有可能引发极大的威胁,有时会直接导致个人信息及机密信息的泄露。
SQL注入攻击有可能造成以下影响:
(1)非法查看或篡改数据库内的数据
(2)规避认证
(3)执行和数据库服务器业务关联的程序等

是指通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell函数的地方就有存在被攻击的风险。

是指攻击者通过在相应首部字段内插入换行,添加任意响应首部或主体的一种攻击。
影响:
(1)设置任何Cookie信息
(2)重定向至任意URL
(3)显示任意的主体(HTTP响应截断攻击)

http响应截断攻击是用在http首部注入的一种攻击。攻击顺序相同,但是要将两个%0D%0A%0D%0A并排插入字符串后发送。利用这两个连续的换行就可作出http首部与主题分割所需的空行了,这样就能显示伪造的主体,达到攻击的目的。

是指Web应用中的邮件发送功能,攻击者通过想邮件首部To或Subject内任意添加非法内容发起的攻击。利用存在安全漏洞的Web网站,可对任意邮件地址发送广告邮件或病毒邮件。

是指对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的的一种攻击。这种攻击有时也称为路径遍历攻击。
通过Web应用对文件处理操作时,在由外部制定文件名的处理存在疏漏的情况下,用户可使用。。、等相对路径定位带/etc/passed等绝对路径上,因此服务器上任意的文件或文件目录皆有可能被访问到。这样一来,就有可能非法浏览、篡改或删除Web服务器上的文件。

是指当部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的URL充当依赖文件,让脚本读取之后,就可运行任意脚本的一种攻击。
这主要是PHP存在的安全漏洞,后来已经废除这个功能。

因重置或设计上的缺陷引发的安全漏洞

是指错误设置Web服务器,或是由设计上的一些问题引起的安全漏洞。

是指从安置在Web服务器的公开目录下的文件中,浏览那些原本非自愿公开的文件。
影响:
(1)泄露顾客的重要信息等情报
(2)泄露原本需要具有访问权限的用户才可以查阅的信息内容
(3)泄露未外连到外界的文件

是指Web应用的错误信息内包含对攻击者有用的信息。比如登录时错误信息过于详细。
错误信息如下:
(1)web应用抛出的错误信息
(2)数据库等系统抛出的错误信息

因会话管理疏忽引发的安全漏洞

会话管理是用来管理用户状态的必备功能,但是如果在会话管理上有所疏忽,就会导致用户的认证状态被窃取。

是指攻击者通过某种手段拿到了用户的会话ID,并非法使用此会话ID伪装成用户,达到攻击目的。


image.png

对以窃取目标会话ID为主动攻击手段的会话劫持而言,会话固定攻击会强制用户使用攻击者指定的会话ID,属于被动攻击。
案例

image.png

其他安全漏洞

即算出密码。突破认证。攻击不仅限于Web应用,还包括其他的系统。
密码破解手段
(1)通过网络的密码试错
(2)对已加密密码的破解(指攻击者入侵系统,已获得加密或散列处理的下面数据的情况)
除去突破认证的攻击手段,还有SQL注入攻击逃避认证,跨站脚本攻击窃取密码信息等方法。

是指利用透明的按钮或者链接做成陷阱,覆盖在Web页面上,然后诱使用户在不知情的情况下,点击那个链接访问内容的一种攻击手段。这种行为又称为界面伪装。
已设置陷阱的Web页面,表面上内容并无不妥,但早已埋入想让用户点击的链接。当用户点击到透明的按钮时,实际上是点击了已指定透明属性元素的iframe页面。

是一种运行中的服务呈停止状态的攻击。有时也叫做服务停止攻击或拒绝服务攻击。Dos攻击的对象不仅限于Web网站,还包括网络设备及服务器等。
Dos攻击的方式:
(1)集中利用访问请求在成资源过载,资源用尽的同时,实际上服务也就呈停止状态;
(1)通过攻击安全漏洞是服务停止。

image.png
上一篇下一篇

猜你喜欢

热点阅读