「配枪朱丽叶。」

RootのCTF学习笔记。

读书笔记(一)

【1】HTTP协议中有很多请求方法。其中HEAD方法和GET方法相同,不过服务器响应时不会返回消息体(响应中正文内容),只有消息头。这种方法可以用来获取请求中隐含的元信息,而不用传输实体本身,所以传输效率高,它可以用来检测链接或目录的有效性。
【2】HTTP认证主要有两种。
Basic(基本式):客户端每次访问WEB应用时,都要在请求的头部携带认证信息,一般是用户名和密码。Basic的请求中有如下字段:

Authorization: Basic YWRtaW46c2VjcmV0

其中,HTTP请求中的Authorization字段包含着用户名和密码信息,Basic后面的一串字符“YWRtaW46c2VjcmV0”即为用户名和密码的base64编码。解码后的内容为admin:secret。
缺点:它是按照明文信息进行传递的,因此很容易被中间人劫持获取。
Digest认证(摘要式):Digest认证是为了修复基本认证协议的严重缺陷而设计的,它比basic更安全。
相对于基本认证,主要有如下改进:

绝不通过明文在网络上发送密码
可以有效防止恶意用户进行重放攻击
可以有选择的防止对报文内容的篡改

学习参考:HTTP认证之摘要认证——Digest(一) - xiaoxiaotank - 博客园
【3】HTTP是一种无状态的协议。服务端仅从网络连接无法知道客户端的身份,所以Cookie被用来作为会话识别的标识。
【4】如果每次都要对域名进行DNS查询解析,就会浪费很多不必要的查询时间,这时DNS缓存的作用就凸显出来,它可以将域名和IP对应的关系存储下来。DNS本地缓存有两种形式:一种是浏览器缓存,一种是系统缓存。在浏览器中访问域名时,它会优先访问浏览器缓存,一旦未命中,则会访问系统缓存。既然是缓存,那么就会涉及有效时间,系统缓存的DNS记录有一个TTL值(Time to live),单位是秒,意思是这个缓存记录的最大有效时间。而浏览器的缓存有效时间则是各大厂商单独设置的,比如:chrome浏览器的缓存时间大约为1分钟。
查看chrome浏览器的缓存:

chrome://net-internals/#dns

系统缓存:

Windows系统输入ipconfig /displaydns查看DNS缓存。
Linux平台下,可以通过NSCD查看缓存。

【5】客户端跳转通常分为两种:一种301跳转,301代表永久性转移,另一种是302跳转,302代表临时性跳转。其实301和302的跳转流程一样,只不过状态码不同而已。
【6】服务端跳转时,客户端只发送一次请求,浏览器的地址栏不会显示目标地址的URL;而客户端跳转时,由于是两次请求,地址栏会显示目标资源的URL。