所有HTTP消息(请求与响应)中都包含:
-
一个或几个单行显示的消息头(header),
在消息头部分主要包含:响应行信息和响应头信息
-
一个强制空白行;
-
最后是响应消息主体;
以下是一个典型的HTTP响应:
HTTP/1.1 200 OK
-- 响应行信息
Date: Tue, 19 Apr 2011 09:23:32 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Set-Cookie: tracking=tI8rk7joMx44S2Uu85nSWc
X-AspNet-Version: 2.0.50727
Cache-Control: no-cache
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 1067
-- 响应头信息
空行
<IDOCTYPE html PUBLIC一//W3C//DTD XHTML 1.0 Transitional//EN二http://
www.w3.org/TR/xhtmll/DTD/xhtmll一transitional.dtd"><html xmlns="http://
www.w3.ora/1999/xhtml* ><head><title>Your details</title>
-- 响应主体信息
一、响应报文部分区域详细解读:响应行
HTTP响应报文中请求行包含三个信息部分:
HTTP响应报文中常用的协议版本:
因特网上常用的HTTP版本为1.0和1.1,多数浏览器默认使用1.1版本,在有些特殊场景下还会使用2.0版本进行通讯
这三个版本的规范之间存在一些差异;然而,当攻击Web应用程序时,渗透测试员可能遇到的唯一差异是1.1版本必须使用Host请求头。
HTTP响应报文中常用的状态编码:
每条HTTP响应消息都必须在第一行中包含一个状态码,说明请求的结果。根据代码的第一位数字,可将状态码分为以下5类:
还有大量特殊状态码,其中许多状态码仅用在特殊情况下。
下面列出渗透测试员在攻击Web应用程序时最有可能遇到的状态码及其相关的原因短语:
-
状态码信息:100 Continue
当客户端提交一个包含主体的请求时,将发送这个响应。
该响应表示已收到请求消息头,客户端应继续发送主体。请求完成后,再由服务器返回另一个响应。
-
状态码信息:200 OK
本状态码表示已成功提交请求,且响应主体中包含请求结果。
-
状态码信息:201 Created
PUT请求的响应返回这个状态码,表示请求已成功提交。
-
状态码信息:301 Moved Permanently
本状态码将浏览器永久重定向到另外一个在Location消息头中指定的URL。以后客户端应使用新URL替换原始URL。
-
状态码信息:302 Found
本状态码将浏览器暂时重定向到另外一个在Location消息头中指定的URL。客户端应在随后的请求中恢复使用原始URL.
-
状态码信息:304 Not Modified
本状态码指示浏览器使用缓存中保存的所请求资源的副本。
服务器使用If-Modified-Since与If-None-Match消息头确定客户端是否拥有最新版本的资源。
-
状态码信息:400 Bad Request
本状态码表示客户端提交了一个无效的HTTP请求。
当以某种无效的方式修改请求时(例如在URL中插人一个空格符),可能会遇到这个状态码。
-
状态码信息:401 Unauthorized
服务器在许可请求前要求HTTP进行身份验证。WWW-Authenticate消息头详细说明所支持的身份验证类型。
-
状态码信息:403 Forbidden
本状态码指出,不管是否通过身份验证,禁止任何人访问被请求的资源。
-
状态码信息:404 Not Found
本状态码表示所请求的资源并不存在。
-
状态码信息:405 Method Not Allowed
本状态码表示指定的URL不支持请求中使用的方法。
例如,如果试图在不支持PUT方法的地方使用该方法,就会收到本状态码。
-
状态码信息:413 Request Entity Too Large
本状态码表示请求主体过长,服务器无法处理。
-
状态码信息:414 Request URI Too Long
与前一个响应类似,本状态码表示请求中的URL过长,服务器无法处理。
-
状态码信息:500 Internal Server Error
本状态码表示服务器在执行请求时遇到错误。
当提交无法预料的输入、在应用程序处理过程中造成无法处理的错误时,通常会收到本状态码。
应该仔细检查服务器响应的所有内容,了解与错误性质有关的详情。
-
状态码信息:503 Service Unavailable
本状态码表示尽管Web服务器运转正常,并且能够响应请求,但服务器访问的应用程序还是无法作出响应。
应该进行核实,是否因为执行了某种行为而造成这个结果。
二、响应报文部分区域详细解读:响应头
-
响应头字段解读:Server
消息头中包含一个旗标,指明所使用的Web服务器软件。
有时还包括其他信息,如所安装的模块和服务器操作系统。其中包含的信息可能并不准确。
-
响应头字段解读:Set-Cookie
消息头向浏览器发送另一个cookie,它将在随后向服务器发送的请求中由Cookie消息头携带。
-
响应头字段解读:Pragma
消息头指示浏览器不要将响应保存在缓存中。Expires消息头指出响应内容已经过期,因此不应保存在缓存中。
当返回动态内容时常常会发送这些指令,以确保浏览器随时获得最新内容。
-
响应头字段解读:Content-Type
几乎所有的HTTP响应在消息头后的空白行下面都包含消息主体,Content-Type消息头表示这个消息主体中包含一个HTML文档。
-
响应头字段解读:Content-Length
消息头规定消息主体的字节长度。
-
响应头字段解读:ETag
浏览器根据HTTP请求的ETag验证请求的资源是否发生了改变,如果它未发生变化,服务器将返回“304 Not Modified”响应;
并且资源从浏览器缓存中读取,这样就不必再次下载请求。
-
响应头字段解读:Vary:Accept-Encoding
表示网站一般启用了GZip压缩
-
响应头字段解读:Expires
是RFC 2616(HTTP/1.0)协议中表示作用于网页缓存相关字段,用来控制缓存信息的失效日期;