本文为《Web安全权威指南》第三章《HTTP会话管理》的笔记。
(一)HTTP消息
一、简单的HTTP
书中通过Fiddle进行抓包,但我使用的是Burpsuit,原理其实一样的。随便找一个网站抓一下包:
请求消息(GET)
请求消息(POST)
其中:
1、GET,POST为请求方法。
2、md5.php?为所请求的URL
3、HTTP/1.1为协议以及版本。
4、百分号编码:中文和特殊符号不能直接用于URL,需要将字符以字节为单位转化成“%xx”的形式。xx为该字节的十六进制写法。比如空格为%20,‘#’为%23等。
5、Refer头消息可以告诉我们当前请求是从哪个页面连接过来的。但是有时会透露敏感信息(URL参数),如会话ID(笔者是小白还没有遇到..)
注:POST与GET的区别:
1、首先是消息体,"Connection"行下的空行下面的“username=...”行被称作消息体。这是POST与GET不同点之一,GET方法没有消息体,而POST方法有,消息体的内容就是要被POST的数据。
2、发送敏感数据或传递的信息量很大时应使用POST方法。
响应消息
1、第一行为状态行,三者分别为 协议版本,状态码,状态描述。其中状态码若为2XX即正常,3XX表示重定向(这其中在一些CTF题中会有信息),4XX说明客户端错误。
2、第二行后为响应头信息。根据英文很好理解
3、空行之后的“please...”为响应的正文,即我们所看到的界面的组成。
二、HTTP认证与会话管理
1、HTTP认证
HTTP认证是无状态的,如同HTTP协议是无状态的协议一样。这里的“无状态”有一个通俗的解释:"就好像你登录某网站,由于http是一个无状态的协议,你点击超链接跳转到该网站中其它的页面时,你的登录状态就不存在了。"HTTP认证分为几种,书上用了Basic认证举例。
Basic认证分为几步:首先,用户访问需要认证的网页(浏览器发送请求),服务器向浏览器返回一个“401 Unauthorized”的状态码,表明未认证。接下来浏览器向用户询问用户名和密码,用户输入后浏览器将用户名和密码添加到请求信息中再次向服务器发送。
2、会话管理
由于HTTP是无状态协议,服务器无法保存客户端的状态(是否登陆等),为了实现对用户的状态的记录,“会话管理”出现了。
未完待续
因为是后补的,所以慢慢来哈~