Web安全攻防从入门到精通
上QQ阅读APP看书,第一时间看更新

1.1
HTTP请求

所有HTTP消息(请求与响应)中都包含一个或几个单行显示的消息头(header),然后是一个强制空白行,最后是消息主体(可选)。如何查看HTTP请求呢?其实只要我们打开一个网页,就会自动向服务器发送一个HTTP请求,然后服务器返回一个回复,这就是我们看到的网站内容。下面演示一下如何获取一个网站HTTP请求,在学习Web信息收集之前,必须知道HTTP协议,因为Web信息收集大部分都是通过HTTP协议来进行的。

关于HTTP请求与响应,下面使用Firefox火狐浏览器给大家进行演示。首先给大家介绍一下如何下载和安装火狐浏览器。百度搜索“Firefox download”,然后根据提示进行下载即可,如图1.1所示。

下载时需要注意,要选择好相应的操作系统和版本,如图1.2所示。

图1.1 百度搜索火狐浏览器

图1.2 下载火狐浏览器

打开火狐浏览器,单击鼠标右键打开菜单栏,然后选择【检查元素】进行下一步操作,如图1.3所示。

图1.3 打开菜单栏

选择【网络】选项后,对网站进行刷新操作,此时可以发现有大量的网址出现,如图1.4所示。

图1.4 选择【网络】选项

接着选择向上翻,选择其中一个请求项内容如图1.5所示,里面包含消息头等相关内容。下面将对消息头内容项一个一个进行说明。如图1.5所示,左边部分是请求HTTP协议,右边是服务器响应。这就是一个典型的HTTP请求。

图1.5 HTTP请求

如下面这段代码所示,每个HTTP请求的第一行都由3个以空格间隔的项目组成。

那么如何看到HTTP请求呢?其实通过工具我们可以发现HTTP头请求。HTTP可以随意更改,只要有需求,我们就可以随意更改,以下为HTTP请示头解释。

●GET:一个说明HTTP方法的动词,也是最常用的方法,它的主要作用是从Web服务器获取一个资源。GET请求并没有消息主体,因此在消息头后的空白行中没有其他数据。它所请求的URL通常由所请求的资源名称,以及一个包含客户端向该资源提交的参数的可选查询字符串组成。下面对它使用的HTTP版本进行说明。因特网上常用的HTTP版本为1.0版本和1.1版本,多数浏览器默认使用1.1版本。这两个版本的规范之间存在一些差异,而当Web应用程序受到攻击时,渗透测试员可能遇到的唯一差异是1.1版本必须使用Host请求。

●Host消息头:用于指定出现在被访问的完整URL中的主机名称。如果几个Web站点以相同的一台服务器为主机,就需要使用Host消息头,因为请求第一行中的URL内通常并不包含主机名称。

●Accept:Accept表示浏览器支持的MIME类型;MIME的英文全称是Multipurpose Internet Mail Extensions(多用途互联网邮件扩展),它是一个互联网标准,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。浏览器支持的MIME类型分别是text/html、application/xhtml+xml、application/xml和*/*,优先顺序是它们从左到右的排列顺序。

注意,text/html、application/xhtml+xml和application/xml都是MIME类型,也可以称为媒体类型和内容类型。斜杠“/”前面的是type(类型),斜杠“/”后面的是subtype(子类型);type指定大的范围,subtype是type中范围更明确的类型,即大类中的小类。

●Referer消息头:用于表示发出请求的原始URL(例如,用户单击页面上的一个链接)。注意,在早期的HTTP规范中,这个消息头存在拼写错误,正确的英语拼法是Referrer。但是为了保证向后兼容,就将错就错,于是这个错误一直保留了下来。

●Accept-Language:浏览器支持的语言分别是中文和简体中文,优先支持简体中文。详解如下。

Accept-Language:表示浏览器所支持的语言类型。zh-cn表示简体中文;zh表示中文。

q是权重系数,范围0≤q≤1。q值越大,请求越倾向于获得其“;”之前的类型表示的内容;若没有指定q值,则默认为1,若被赋值为0,则用于提醒服务器哪些是浏览器不接受的内容类型。

User-Agent消息头:提供与浏览器或其他生成请求的客户端软件有关的信息。

注意

由于历史原因,大多数浏览器中都包含Mozilla前缀。这是因为最初占支配地位的Netscape浏览器使用了User-Agent字符串,而其他浏览器也希望让Web站点相信它们与这种标准兼容。与计算领域历史上的许多怪异现象一样,这种现象变得很普遍,即使是当前版本的Internet Explorer也保留了这一做法,示例的请求即由Internet Explorer提出。

●Accept-Encoding:浏览器支持的压缩编码是gzip和deflate。

●Cookie消息头:用于提交服务器向客户端发布的其他参数(请参阅本章后续内容了解更多详情)。

●Connection:表示持久的客户端与服务连接。