HTTP协议是互联网信息交互中最为重要的协议之一,特别是在当前Web 2.0被广泛应用的今天,HTTP协议上承载了Web应用的主要交互手段和认证机制。从供给角度来讲,多数针对Web站点的供给手段也需要借助操作、提交、解析HTTP协议来完成。如:XSS攻击、SQL注入、暴力破解等攻击手段,以及主流的漏洞扫描工具的漏洞检验机制等。因此HTTP协议是学习Web安全知识绕不开的协议。

URL(Uniform Resource identifier): 统一资源标识符。
结构:

scheme://login:passwd@address:port/path/to/resource?query_string#fragment

Scheme协议名称:
指定使用的传输协议,其中HTTP协议是互联网中最广泛的协议。
其他协议:
file:用于访问资源位于本地计算机上的文件。
ftp:用于访问FTP服务器上的资源。
https:通过加密协议SSL的http访问web服务器资源。

mailto:访问资源属于电子邮件地址,通过SMTP协议访问。
ed2k\flashget\thunde等通过支持专用下载协议的P2P软件访问资源

// :

URL层级URL标记符号,在授权信息之前,每个层级结构的绝对URL里应该包括固定的"//"符号,同样根据该规范,如果没有层级URL标记,将无法确定URL余下部分的格式和功能。
非层级URL结构: mailto:

login:passwd:
访问资源的身份认证。
在URL中身份验证属于可选项,在向服务器申请资源时,在某些情况下,需要制定一个用户名和密码。需要注意的是,此处身份验证的字段只与URL开端指定的协议有关,和实际请求的内容无关。
如果没有身份验证字段,浏览器默认以匿名方式访问资源。

address:服务器地址:

完整的层级URL,必须有一个域名、IPv4或者IPv6地址作为请求服务器的位置。这里域名是不区分大小写的,二IPv6需要在方括号中
port:服务器端口

服务器端口是URL中的可选内容,在没有端口时,会默认去访问协议的标准端口。基本上浏览器支持的协议都会有关联的默认服务接口。不过默认接口可以在URL中进行修改。
TCP和UDP都依赖一个16位端口号来分别访问同一台服务器的不同服务。
/path/to/resource:层级文件路径

URL的这部分被称为层级文件路径,这一结构来源自UNIX目录语义,因此保留了对"/../" 、"/./" 的支持。
?query_string:查询字符串
查询字符串是一个非必须的字段,只要负责将一系列非层级格式的任意参数传递给指定的服务器资源。遗憾的是。RFC标准中并未对这一字段的规则进行硬性的规定,因此留下了很多安全隐患,此处会引发很多的安全问题。

#fragment:片段ID
片段ID是应用的位置有别于查询字符串,他应用于客户端,片段ID并不会传到服务器。片段ID一般指向页面中的某个锚点,将片段ID与预先设置的锚点名称匹配,并滚动到相应位置。
片段ID有一项不常使用的用途,就是储存临时数据,例如保存客户端脚本需要的一些状态参数。
HTTP协议

HTTP,全称是超文本传输协议,是WEB的核心传输机制,也是服务端与客户端之间交换URL的首选协议。

HTTP请求:

 

HTTP响应:

蓝小鸥