前言
本篇文章从Web安全从业人员的角度出发,介绍HTTP协议。文章内容适用于安全测试人员,但不完全适用于Web开发人员,毕竟开发了解的深度,那得相当专业^_^。
HTTP
HTTP(Hypertext Transfer Protocol 超文本传输协议)是一种用于Web浏览器和Web服务器之间传输数据的应用层协议。
HTTPS
HTTPS(Hypertext Transfer Protocol Secure 超文本传输安全协议)。
TCP 自身只负责传输数据,不负责加密,不负责给前后端当翻译。
HTTP 负责给前后端当翻译,但是不负责传输数据的加密。
TLS 负责给需要传输的数据加密,加密完了再传过去。
HTTPS = HTTP + TLS
(关于HTTPS秘钥的协商,加密算法,感兴趣的可以单独去了解。)
http请求方法
GET:用于请求服务器上的资源。
POST:用于向服务器提交数据,通常用于表单提交、文件上传等场景。
PUT:用于向服务器更新某个资源,通常用于上传文件、更新数据等场景。
DELETE:用于向服务器删除某个资源,通常用于删除文件、删除数据等场景。
其他不常用请求方法:OPTIONS、TRACE、HEAD等。
请求方法的位置如下图的 “GET”。
(业内认为 GET 和 POST 是安全请求方法,其他不安全。有兴趣的可以去做了解。)
(Burpsuite拦截的请求,数据报文结构如上图,WEB安全测试人员的家常菜之一。)
http请求头
使用浏览器的F12功能查看。
使用代理工具拦截查看。
Http请求头信息,本文不做详细介绍,毕竟咱干的不是架构。不过请求头还是要了解一些,毕竟各大安全厂商的漏扫设备,各知名扫描工具,都会报安全防护头缺失的漏洞。
http 请求体
不是每个请求都有请求体(body)。
请求体位置如图20行,请求体格式各式各样,内容也各式各样,但万变不离其宗,无外乎长短。
http请求响应状态码
Http请求响应状态码,用于反馈服务器处理的结果。测试人员、开发人员,可通过请求响应状态码,进行后面更秀的操作。
20x:请求成功。
30x:请求重定向。
40x:请求被禁止。
50x:服务器问题。
本文不对响应码做详细介绍,各响应码代表的含义可本站其他帖子细看。
安全测试人员一般喜欢 200、403、405,因为可以秀。
http请求响应信息
Http请求响应的信息,由服务端返回,由CSS美化。干爬虫的同志们最关心这块,因为命名简单,能省很多事。
结语
给你一个支点,你来把Web应用安全测试翘起来。