Http

作者: 陈星空 | 来源:发表于2019-12-10 10:11 被阅读0次

    1. http和https

    使用http的缺点

    • 通信使用明文(不加密),内容可能会被窃听;
    • 不验证通信方的身份,因此有可能遭遇伪装;
    • 无法证明报文的完整性,所以有可能已遭篡改
    • 还有像某些特定web服务器和特定web浏览器在实际应用中存在的不足,包括编程语言语言开发的web应用也可能存在安全漏洞;

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

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

    • https

    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安全通信机制

    • 通信步骤:
      image.png

    步骤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的通信。

    • https通信过程
      image.png
    • SSL和TLS

    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也被发现存在问题,所以很多浏览器直接废除了该协议版本)。

    • https可能存在的问题
      https存在一些问题,就是当使用SSL时,他的处理速度会变慢。SSL的慢分为两种。一种是指通信慢。除去和TCP连接、发送HTTP请求·响应以外,还必须进行SSL通信,因此整体上处理通信量不可避免会增加。另一种是指客户端和服务器都需要加解密运算,所以大量消耗CPU及内存等资源,服务器负载增强,导致处理速度变慢。

    基于http的功能追加协议

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

    • WebSocket

    在以往由于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
    • Web服务器管理文件的WebDAV
      WebDAV(Web-based Distributed Authoring and Versioning,基于万维网的分布式创作和版本控制)是一个可对Web服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。除了创建删除文件等基本功能,它还具备文件创建者管理、文件编辑过程中禁止其他用户内容覆盖的加锁功能,以及对文件内容修改的版本控制功能。
    • http1.1扩展后的WebDAV
      集合:是一种统一管理多个资源的概念。以集合为单位可进行各种操作。也可实现类似集合的集合这样的叠加
      资源:把文件或集合称为资源
      属性:定义资源的属性。定义以“名称=值”的格式执行
      锁:把文件设置成无法编辑状态。多人同时编辑时,可防止在同一时间进行内容写入
      image.png

    Web的攻击技术

    • 以服务器为目标的主动攻击

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


    image.png
    • 以服务器为目标的被动攻击
      被动攻击是指利用圈套策略执行攻击代码的攻击模式。在被动攻击过程中,攻击者不直接对目标Web应用访问发起攻击。
    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注入攻击
    SQL注入是指针对Web应用使用的数据库,如果在调用SQL语句的方式上存在疏漏,就有可能执行被恶意注入非法SQL语句,通过运行非法的SQL而产生的攻击。该安全隐患有可能引发极大的威胁,有时会直接导致个人信息及机密信息的泄露。
    SQL注入攻击有可能造成以下影响:
    (1)非法查看或篡改数据库内的数据
    (2)规避认证
    (3)执行和数据库服务器业务关联的程序等

    • OS命令注入攻击

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

    • http首部注入攻击

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

    • 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)数据库等系统抛出的错误信息

    • 开放重定向
      这是对指定的任意URL作重定向跳转的功能。此功能相关联的安全漏洞是指,假如指定的重定向URL到某个具有恶意的Web网站,那么用户就会被诱导至那个Web网站。

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

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

    • 会话劫持

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


    image.png
    • 会话固定攻击

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

    image.png
    • 跨站点请求伪造
      是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。
      影响:
      (1)利用已通过认证的用户权限更新设定信息等
      (2)利用已通过认证的用户权限购买商品
      (3)利用已通过认证的用户权限在留言板上发表言论
      案例:
      image.png

    其他安全漏洞

    • 密码破解

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

    • 点击劫持

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

    • Dos攻击

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

    image.png
    • 后门程序
      是指开发设置的隐藏入口,可不按正常步骤使用受限功能。利用后门程序就能够使用原本受限制的功能。
      通常的后门程序分为以下3种类型
      (1)开发阶段作为Debug调用的后门程序
      (2)开发者为了自身利益植入的后门程序
      (3)攻击者通过某种方法设置的后门程序

    相关文章

      网友评论

          本文标题:Http

          本文链接:https://www.haomeiwen.com/subject/owhbgctx.html