图解HTTP 笔记(完)

文章目录


/图解HTTP 笔记 一、二

确认访问用户身份的认证

密码:只有本人才会知道的字符串信息
动态令牌:仅限本人持有的设备内显示的一次性密码
数字证书:仅限本人持有的信息
生物认证:指纹和虹膜等本人的生理信息
IC卡等:仅限本人持有的信息

HTTP的认证方式

BASIC认证(基本认证)
DIGEST认证(摘要认证)
SSL客户端认证
FormBase认证(基于表单的认证)
Keberous认证
NTLM认证

BASIC认证

web服务器与通信客户端之间的认证方式。

认证步骤:在这里插入图片描述

  • 第二步中当用户代理为浏览器时,只需要输入ID和密码,浏览器会自动完成到Base64编码的转换。
  • 虽然采用Base64加密,但这并不是加密处理,因此被人窃听的可能性较高。
  • 要想再进行一次BASIC认证,一般浏览器无法注销,不够快捷灵活,达不到web网站期望的安全性等级,不常用

DIGEST认证

  • 同样使用质询/响应【一开始一方发送认证,且这一方接收到来自另一方的质询码生成响应码】的方式,但不是像BASIC认证中直接发送明文密码。因此,这种方式使得密码泄露的可能性降低。

  • DIGEST认证步骤:在这里插入图片描述

  • nonce是一种每次随返回的401响应生成的任意随机字符串。该字符串推荐由Base64编码的十六进制数的组成形式,实际内容依赖服务器的具体实现。

  • DIGEST认证的安全等级较BASIC高,但是依旧比HTTPS的客户端认证较弱,且同样不那么便捷灵活,安全等级较低。DIGEST认证提供防止密码被窃听的保护机制,但并不存在防止用户伪装的保护机制。

SSL客户端认证

SSL客户端认证是借由HTTPS的客户端证书完成认证的方式,凭借SSL客户端证书认证服务器可确认访问是否来自已登录的客户端,而且可以认证是否为否为本人,防止第三者冒充。

SSL客户端认证的认证步骤

  1. 需要事先将客户端证书分发给客户端,且客户端必须安装此证书
  2. 接收到认证资源的请求,服务器发送Certificate Request报文,要求客户端提供客户端证书。
  3. 用户选择客户端证书后,客户端会把客户端证书发送给服务器。
  4. 服务器验证客户端证书后即可领取证书内客户端的公开密钥,然后开始HTTPS加密通信。

SSL客户端认证采用双因素验证

  • SSL不仅依靠证书完成认证,还会与基于表单验证组合形成一种双因素验证来使用。
  • 认证过程不仅需要密码,还需要申请认证者提供其他持有信息来确定是用户本人的行为。

基于表单验证

认证多半为基于表单验证

  • HTTP协议标准提供的BASICDIGEST认证几乎不怎么使用,SSL客户端认证虽然安全等级较高,但因为导入以及维持费用等问题,普及度较低。

Session管理及Cookie应用

cookie指某些网站为了辨别用户身份,进行session跟踪而存储在用户本地终端上的数据,而这些数据通常会进行加密处理

  • 一般使用cookie来管理Session
  • 基于表单验证本身是通过服务器端的web应用,将客户端发送过来的用户ID和密码与之前登录过的信息做匹配来进行认证。
    1. 客户端以POST方法把用户名和密码发送给服务器,使用HTTPS通信来进行HTML表单画面的显示和用户输入数据的发送。
    2. 服务器发送用于识别用户的Session ID,通过验证从客户端发过来的登录信息进行身份认证,然后把用户的认证状态与Session ID绑定后记录在服务器端。因此,若Session ID被盗,则对方就可以伪装成你的身份进行操作。所以,Session ID使用难以揣测的字符串,且服务器端进行有效期的管理来保证其安全性。为减少被xss攻击造成损失,正如前一篇文章提到的,cookie内加上httponly属性。
    3. 客户端收到Session ID后,将其作为cookie保存在本地。下次向服务器发送请求时,浏览器会自动发送cookieSession ID随之发送到服务器上完成身份验证。
  • 还有的安全的保存方法:先给密码加盐salt【由服务器随机生成的一个字符串,保证长度足够长】,再使用散列函数计算出散列值保存。

基于HTTP的功能追加协议

HTTP2.0版本就是在SPDYwebsocket的基础之上改善。

消除HTTP瓶颈的SPDY

HTTP的瓶颈

请求只能从客户端开始,客户端不能接收除响应以外的指令。
请求/响应首部未经压缩发送,导致信息较多有延迟。
每次发送相同的冗长的首部,浪费较多。
可任意选择数据压缩格式,非强制压缩发送。

在这里插入图片描述

  • Ajax通过JS的调用,从已加载完毕的web页面上发起请求,只更新局部页面,解决了第一个响应的问题。在这里插入图片描述
  • comet延迟应答,保留响应直至服务器端的更新,但是更消耗资源,响应时间也变长了。在这里插入图片描述
  • AjaxComet技术均提升了web的浏览速度

SPDY的设计与功能

在这里插入图片描述

  • 为了安全性,SPDY规定通信过程中使用SSL
  • SPDY以会话层加入,控制数据的流动,但依然采用HTTP建立通信连接,依然可以使用GET、POST、cookie等。
  • SPDY增加的额外功能:
    1. 多路复用流:通过单一的TCP连接,可以无限处理多个HTTP请求,TCP处理效率提高。
    2. 赋予请求优先级:在发送多个请求时,解决因带宽低而导致响应变慢的问题。
    3. 压缩HTTP首部:通信产生的数据包流量和发送的字节数减少。
    4. 推送功能:服务器主动直接发送数据,不必等待客户端的请求。
    5. 服务器提示功能:主动提示客户端请求所需的资源,避免发送不必要的请求。
  • SPDY并不是绝对可以消除瓶颈,也不是只有这一种技术可以解决HTTP瓶颈。

使用浏览器进行全双工通信的websocket

websocket的设计与功能

建立在HTTP基础上的协议,即web浏览器与服务器之间全双工通信标准。

websocket协议

  • 一旦服务器与客户端之间建立起websocket协议的通信连接,之后所有的通信都依靠这个专用协议。
  • 通信过程可互相发送JSON、XML、HTML或图片等任意格式的数据。
  • 无论连接的发起方是谁,都可以向对方发送报文。
  • 协议特点
    1. 推送功能:服务器主动直接发送数据,不必等待客户端的请求。
    2. 减少通信量:websocket的首部信息很小,通信量也减少了
    3. 为了实现wesocket通信,在HTTP连接建立之后,需要完成一次握手步骤。
      一、握手、请求
      实现websocket通信,需要用到HTTPUpgrade首部字段【用于检测HTTP协议及其他协议是否可使用更高的版本进行通信】,告知服务器通信协议发生改变,来到到握手目的。Sec-websocket-key字段内记录握手中的键值,Sec-websocket-Protocol字段内记录使用的子协议。
      二、握手、响应
      成功握手确立websocket连接之后,通信是不再使用HTTP的数据帧,而是采用websocket独立的数据帧·。在这里插入图片描述

web服务器管理文件的webDAV

分布式文件系统,可对服务器上的内容直接文件复制、粘贴、创建、删除、文件创建者管理、文件编辑过程中禁止其他用户内容覆盖、对文件内容修改版本控制等功能。

webdav新增概念(扩展HTTP/1.1)

  • 集合:统一管理多个资源的概念,以集合为单位进行各种操作。
  • 资源:文件或集合称为资源。
  • 属性:定义资源的属性,格式为“名称+值”。
  • 锁:把文件设置为无法编辑状态,多人同时编辑防止在同一时间内进行内容写入。

webdav新增方法和状态码

propfind :获取属性
proppatch:修改属性
mkcol:创建集合
copy:复制资源及属性
move:移动资源
lock:资源加锁
unlock:资源解锁

102 processing:可正常处理请求,但目前是处理中请求
207 multi-status:存在多种状态
422 unprocessible entity:格式正确,内容有误
423 locked:资源被加锁
424 failed dependency:处理与某请求关联的请求失败,因此不再维持依赖关系
507 insufficient storage:保存空间不足

构建web内容的技术

HTML基础学习

动态HTML需要使用JS语言

CSS基础学习

web应用

通过web提供功能的web应用

web应用于动态内容之上。
在这里插入图片描述

与web服务器及程序协作的CGI

  • CGIweb服务器在接收到客户端发送过来的请求后转发给程序的一组机制。
  • 使用CGI编写的程序叫CGI程序,通常用PHP、C等编程语言编写。
    在这里插入图片描述

因Java而普及的Servlet

  • Servlet是一种能在服务器上创建动态内容的程序,用Java语言实现的一个接口。
  • 在上面的CGI中,每次收到请求,程序都要启动一次,负载量较大;而Servlet运行在与web服务器相同的进程中。
    在这里插入图片描述

数据发布的格式及语言

可扩展标记语言XML

  • XML是一种可按应用目标进行扩展的通用标记语言,旨在使互联网数据共享更加容易。
  • XML文档中读取数据比HTML更简单,更容易对数据进行读取。
  • 也可用在两个不同的应用之间的交换数据格式化。

发布更新信息的RSS/Atom

RSSAtom都是发布新闻或博客日志等更新信息文档的格式的总称,两者都用到了XML。

JS衍生的轻量级易用JSON

  • JSON使一种以JS的对象表示法为基础的轻量级数据标记语言,能够处理的数据类型有false、null、true、对象、数组、数字、字符串这七种类型。
  • JSON的字符串形式可以被JS轻松读入。

web的攻击技术

针对web的攻击技术

简单的HTTP协议本身不会成为攻击对象,而应用HTTP协议的服务端和客户端以及运行在服务器上的web应用等资源才是攻击目标。在这里插入图片描述

HTTP不具备必要的安全功能

  • 现在的大多数web网站所应用的session、加密处理等安全性方面的,HTTP协议均无这些功能。
  • 例如远程登录使用的SSH协议,SSH具备协议级别的认证以及会话管理,而HTTP协议没有。在架设SSH服务方面,任何人都可轻易创建安全等级高的服务,而HTTP已架设好服务器,很多服务需要重新开发。

在客户端即可纂改请求

  • web应用可能会接收到与预期不相同的内容。

在这里插入图片描述

针对web应用的攻击模式

  1. 以服务器为目标的主动攻击
  • 主动攻击通过直接访问web应用,把攻击代码传入的攻击模式。由于该模式是直接针对服务器上的资源进行攻击,因此攻击者需要能够访问到资源。
  • 具有代表性的主动攻击:SQL注入攻击和OS命令注入攻击。

在这里插入图片描述

  1. 以服务器为目标的被动攻击在这里插入图片描述
  • 被动攻击模式中具有代表性的是XSS攻击和CSRF
  • 利用用户身份攻击企业内部网络。在这里插入图片描述

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

实施web应用的安全对策
一、 客户端的验证
二、 服务器端(web应用端)的验证

  • 输入值验证
  • 输出值转义在这里插入图片描述
  • 多数情况下使用JS在客户端验证数据,可是客户端允许纂改数据或者关闭JS,因此不适合作为安全防范。保留客户端验证只是为了尽早辨识输入错误,提高UI体验。
  • 输入值验证通常是指检查是否符合系统内部逻辑的数值或者检查字符编码等预防对策。
  • 输出值转义主要是处理从数据库或文件系统、HTML、右键等输出web应用处理的数据。
  • 输出值转义不完全可能会触发攻击者传入的攻击代码。

XSS攻击

指通过存在安全漏洞的web网站注册用户的浏览器内允许非法的HTML标签或JS进行的一种攻击,是攻击者利用预先设置的陷阱触发的被动攻击。

xss的影响:
  1. 利用虚拟输入表单骗取个人信息。
  2. 利用脚本窃取用户的cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求。
  3. 显示伪造的文章或图片。
攻击案例:

一、在这里插入图片描述 <s>被解析成HTML标签在这里插入图片描述
若将标签改为<script>则可能会被XSS攻击。

二、
在这里插入图片描述
这个恶意的URL被隐藏植入
在这里插入图片描述
当用户在表单输入ID和密码之后,表面没有变化,但脚本在后台运行,将ID和密码直接发送到攻击者的网站(hacker.jp),导致个人信息被窃取。在这里插入图片描述
三、对用户cookie的窃取攻击在这里插入图片描述
该脚本指定的http://hacker.jp/xss.js
在这里插入图片描述
这段JS代码被执行后,即可访问到该web应用所处域名下的cookie信息,发送到攻击者的web网站http://hacker.jp/在这里插入图片描述

SQL注入攻击

SQL攻击指针对web应用使用的数据库,通过运行非法的SQL语句而产生的攻击,危害较大。
SQL是用来操作关系型数据库管理系统的数据库语言,如MySQL、Server、Oracle

SQL注入攻击的影响
  • 非法查看或纂改数据库内的数据
  • 规避认证
  • 执行和数据库服务器业务关联的程序等

OS命令注入攻击

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

  • web应用中通过调用shell函数来调用对操作系统的命令。若调用时存在疏漏,则可以执行非法的OS命令注入攻击。
OS注入攻击案例

在这里插入图片描述
在这里插入图片描述
核心代码:open函数会调用sendmail命令发送邮件,而指定的邮件发送地址为$adr
在这里插入图片描述
攻击者将上面的值指定作为邮件地址。在这里插入图片描述
攻击者的输入值中的分号,在os命令中,会被解析为分割多个执行命令的标记。最终,含有linux账户信息/etc/passwd的文件,以邮件形式发送给了hack@example.jp

HTTP首部注入攻击

指攻击者通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击,属于被动攻击模式。

HTTP注入攻击危害
  • 设置任何cookie信息
  • 重定向至任意URL
  • 显示任意的主体(HTTP响应截断攻击)
HTTP注入攻击案例

Location:重定向跳转至任意URL

在这里插入图片描述
将location中的内容换成上面的值,%0D%0A代表HTTP报文中的换行符,强制将攻击者网站的会话ID设置为SID=123456789的set-cookie首部字段。在这里插入图片描述
因此攻击者可指定修改任意位置的cookie信息。

HTTP响应截断攻击

是用在HTTP首部注入的一种攻击,将两个%0D%0A并排插入字符串后发送,利用两个连续的换行可作出HTTP首部与主体风格所需的空行,这样就能显示伪造的主体。在这里插入图片描述
在这里插入图片描述
利用这种攻击,可达到与XSS攻击相同的效果。

邮件首部注入攻击

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

攻击案例

在这里插入图片描述
使用换行符之后,实现对Bcc邮件地址的追加发送。在这里插入图片描述

连续两次换行符,可能纂改邮件文本内容并发送。

目录遍历攻击

是指对本无意公开的文件目录,通过非法截断其目录路径之后,达到一种访问目的的攻击,这种攻击又叫路径遍历攻击。

攻击案例(读取文件功能)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

远程文件包含漏洞

指当前部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的URL充当依赖文件,让脚本读取之后,就可运行任意脚本的一种攻击。

攻击案例

在这里插入图片描述
以上攻击案例执行了可显示web服务器上文件以及目录信息的ls命令。

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

强制浏览

是指安置在web服务器的公开目录下的文件中,浏览那些原本非自愿公开的文件。

强制浏览的影响
  • 泄露顾客的个人信息等重要情报
  • 泄露原本需要具有访问权限的用户才可查阅的信息内容
  • 泄露未连接到外界的文件

文件目录一览http://www.example.com/log/ ,通过指定文件目录名称,即可在文件一览中看到显示的文件名。
容易被推测的文件名及目录名http://www.example.com/entry/entry_081202.log ,文件名称较容易推测,能推出下一个文件是entry_081202.log。
备份文件http://www.example.com/cgi-bin/entry.cgi(原始文件)
http://www.example.com/cgi-bin/entry.cgi~(备份文件)
http://www.example.com/cgi-bin/entry.bak(备份文件)
由编辑软件自动生成的备份文件无执行权限,有可能直接以源代码形式显示。
经认证才可显示的文件:直接通过URL访问原本必须经过认证才能在web页面上使用的文件(HTML文件、图片、PDF文档、CSS以及其他数据等)。

强制浏览的案例

在这里插入图片描述
只要知道图片的URL,通过直接指定URL的方式就能显示该图片。日记的功能和文本具有访问对象的控制,但不具备对图片访问对象的控制,从而产生了安全漏洞。

不正确的错误消息处理

是指web应用的错误信息内包含对攻击者有用的信息,如web应用抛出的错误消息、数据库等系统抛出的错误消息。

攻击案例

web应用抛出的错误信息
在这里插入图片描述
数据库等系统抛出的错误信息
在这里插入图片描述
错误主要集中在以下几个方面:

  1. PHPASP等脚本错误
  2. 数据库或中间件的错误
  3. web服务器的错误

开放重定向

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

也可被当作钓鱼攻击的跳板。

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

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

会话劫持

指攻击者利用某些手段拿到了用户的会话ID,并非法使用会话ID伪装成用户,达到攻击的目的。会话ID中会记录客户端的cookie等信息。

在这里插入图片描述
获取会话ID的途径:

  • 通过非正规的生成方法推测会话ID
  • 通过窃听或XSS攻击盗取会话ID
  • 通过会固定攻击(Session Fixation)强行获取会话ID
攻击案例

在这里插入图片描述

会话固定攻击

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

攻击案例

在这里插入图片描述

Session Adoption

是指PHPASP.NET能够接收处理未知会话ID的功能。

恶意使用该功能便可跳过会话固定攻击的准备阶段,从web网站获得发行的会话ID的步骤。即,攻击者可私自创建会话ID构成陷阱,中间件却会误以为该会话ID是未知会话ID而接受。

CSRF(跨站点请求伪造)

是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。

CSRF的影响
  • 利用已通过认证的用户全新更新设定信息等
  • 利用已通过认证的用户权限购买商品
  • 利用已通过认证的用户权限在留言板发表言论
CSRF攻击案例

在这里插入图片描述

其他安全漏洞

密码破解

即算出密码,突破认证。攻击不仅限于web应用,还包括其他的系统(如FTPSSH等)。
除去突破认证的攻击手段,还有SQL注入攻击逃避认证、XSS攻击窃取密码信息等方法。

手段
  • 通过网络的密码试错
  • 对已加密密码的破解(指攻击者入侵系统,已获得加密或三列处理的密码数据的情况)
通过网络进行密码试错
  1. 穷举法
  • 又叫暴力破解法,即用所有可行的候选密码对目标的密码系统试错,用以突破验证的一种攻击。
  1. 字典攻击
  • 是指利用事先收集好的候选密码(经过各种组合方式后存入字典),枚举字典中的密码,尝试通过认证的一种攻击手段。在这里插入图片描述
对已加密密码的破解

web应用在保存密码时,一般通过散列函数作散列处理或加salt【由服务器随机生成的一个字符串,保证长度足够长】的手段对要保存的密码加密,要想真正使用密码,则需要解码。

  1. 通过穷举法、字段攻击进行类推在这里插入图片描述
  2. 彩虹表
    由明文密码及与之对应的散列值构成的一张数据库表,是一种通过事先制作庞大的彩虹表,比上一种方法时间较短,从彩虹表搜索散列值来推导明文密码。

彩虹表
3. 拿到密钥
使用共享密钥加密方式的情况下,如果能通过某种手段拿到加密使用的密钥,即可对密码数据解密。
4. 加密算法的漏洞

点击劫持

是指利用透明的按钮或链接做成陷阱,覆盖在web页面之上,诱导用户点击链接并访问内容的一种攻击手段,又叫界面伪装。

攻击案例

在这里插入图片描述
透明的按钮覆盖住了PLAY按钮与注销按钮。

DoS攻击

是一种让运行中的服务呈停止状态的攻击,也叫服务停止攻击或拒绝服务攻击。DoS不仅限于web网站,还包括网络设备及服务器。

攻击方式
  • 集中利用访问请求造成资源加载、资源用尽的同时,实际上服务也就呈停止状态。
  • 通过攻击安全漏洞使服务停止

在这里插入图片描述

  • 多台计算机发起的DoS攻击叫DDoS攻击,通常利用那些感染病毒的计算机作为攻击者的攻击跳板。

后台程序

是指开发设置的隐藏入口,可不按正常步骤使用受限功能,利用后台程序可使用原本受限制的功能。可通过见识进程和通信的状态来发现被植入的后门程序,一般很难发现。

通常的后台程序类型
  1. 开发阶段作为Debug调用的后门程序
  2. 开发者为了自身利益植入的后门程序
  3. 攻击者通过某种方法设置的后门程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

poggioxay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值