黑客攻防技术宝典 web实战 笔记 第三章
笔记
1.HTTP
HyperText Transfer Protocol
HTTP使用一种基于消息的模型
客户端发送一条请求,服务器返回一条相信。
每次请求与相应交换都自动完成。
2.HTTP请求
每一个HTTP请求的第一行都由3个以空格间隔的项目组成。
- http方法的动词 一般为get或者post
- 所请求的url
- 使用的http版本
其他要点
- referer 消息头从哪里来
- user-agent 提供与浏览器或其他生成请求的客户端软件有关的信息。
- host消息头用于指定出现在被访问的URL中的主机名称。
- cookie消息头
3.HTTP响应
每个HTTP响应的第一行由三个以空格间隔的项目组成
- 使用的HTTP版本
- 请求状态码
- 原因短语,进一步说明响应状态
其他要点:
- server消息头中包含的旗标
- set-cookie消息头向浏览器发送另一个Cookie,它将在随后向服务器发送的请求中由cookie消息头返回
- pragma消息头指示浏览器不要响应保存在缓存中。expires消息头支出响应内容已经过期。
- 消息主体,content-type消息头表示这个消息主题包含一个html
- Content-Length消息头规定消息主体的字节长度。
4.HTTP方法
- get
- post
- head 服务器不会在其响应中返回消息主体,这种方法可用于检查某一资源在向其提交GET请求前是否存在。
- trace 这种方法用于诊断,服务器在响应主体中返回其收到的请求消息的具体内容。检测客户端与服务器之间是否存在任何操作请求的代理服务器
- options 这种方法要求服务器报告对某一特殊资源有效的HTTP方法。服务器通常返回一个包含Allow消息头的响应,并在其中列出所有有效的方法
- PUT 向服务器上传的资源,可以上传任意一段脚本并且用于攻击。
5.URL
Uniform Resource Locator
URL是标识web资源的唯一标识符
6.REST
表述性状态转移是分布式系统的一种体系架构。请求和响应包含系统资源当前状态的表述。
7.HTTP消息头
7.1 常用消息头
- Connection 告诉通信的另一端,完成http传输后是关闭tcp连接,啊哈似乎保持连接开放以接受其他消息。
- Content-Encoding:指定消息主题中的编码形式。
- Content-Length: 消息主题的长度
- Content-Type:这个消息头用于规定消息主题的内容类型
- Transfer-Encoding:这个消息头指定通过HTTP传输使用的是何种编码
7.2 请求消息头
- Accept 消息头告诉客户端结构那些内容
- Accept-Encoding。客户端愿意接受哪些内容编码
- Authorization 内置HTTP身份验证向服务器提交整数
- Cookie
- Host
- if-modified-since 浏览器最后一次收到请求的资源的时间
- if-none-match 制定一个实体标签。实体标签是一个说明消息主题内容的标识符。
- origin 消息头用于跨域Ajax请求中,用于指示提出请求的域。
- Referer 提示支出当前请求的原始URL
- user-agent 提供与浏览器或生成请求的其他客户端软件有关的信息
7.3 响应头
- Access-Control-Allow-Origin 指示可否通过跨域Ajax请求获取资源
- Cache-Control 这个消息头用于向浏览器传送缓存指令
- ETag 制定一个实体标签
- Expires 说明消息主题内容的有效时间
- Location 重定向响应。以3开头的状态码,说明有重定向目标
- pragma 想浏览器传送缓存指定
- server 提供所使用的web服务器软件的相关信息。
- Set-Cookie 向浏览器发布Cookie
- www-Authenticate 这个消息头在带401状态中,提供与服务器所支持的身份验证
- X-Frame-Options 指示浏览器框架是否以及如果加载当前响应。
8.Cookie
- expires 设定cookie的有效时间
- domain 指定cookie的有效域
- path 用于指定cookie的有效url路径
- secure 设置这个属性,仅在HTTPS请求中提交Cookie
- HttpOnly 无法通过JavaScrpt直接访问Cookie
9.状态码
- 1xx 提供信息
- 2xx 请求被成功提交
- 3xx 客户端被重定向到其他资源
- 4xx 请求包含某种错误
- 5xx 服务器执行请求时遇到错误
具体 - 100 Continue 客户端提交一个包含主体的请求时,将发送这个响应。
- 200 ok
- 201 put请求响应
- 301 重定向到另一个URL
- 302 暂时重定向到另一个URL
- 304 指示浏览器使用缓存中爆粗你的所在请求资源的副本。
- 400 提交了一个无效的HTTP请求
- 403 不管是否通过身份验证,禁止任何人访问被请求的资源
- 404 不存在
- 405 URL不支持请求中使用的方法
- 500 服务器在执行请求遇到错误
- 503 web服务器运转正常,但是未响应
10.HTPPS
http采用的是非加密的tcp进行传输。
HTTPS 使用ssl来进行传送数据。
SSL已经由TLS代替。但是还是用SSL这个名称。
11.HTTP代理
HTTP代理服务器是一个协调客户端浏览器与目标Web服务器之间访问的服务器。
与正常请求的差异
- 代理服务器将提取主机名称和端口,将这些信息请求指向正确的目标Web服务器
- 使用HTTPS时,浏览器无法与代理服务器进行SSL握手。此时浏览器作为一个纯粹的TCP级中继。浏览器使用CONNECT方法提交一个请求。
PS:
中继:两个交换中心之间的一条传输路。
CONNECT:https://blog.****.net/kobejayandy/article/details/24606521
12.HTTP身份验证
用户身份验证机制
- basic 在请求消息头中随每条消息以base64编码字符串的形式,发送用户证书
- NTLM 质询—响应机制。(NTLM NT LAN Manager,NTLM是windwos早起的安全协议)质询——响应,简单的来说,就是你访问一个资源,然后服务器向客户端要一个凭证(账号密码)如果满足就让你访问,我就对你响应,否则就断开。(http://www.cnblogs.com/wufengtinghai/p/3948412.html)
- Digest 随通用户整数一起使用一个随机值MD5校验和。
ps:
13.Web 功能
13.1 HTTP请求传送参数的方式
- URL查看字符串 (get)
- REST风格URL
- HTTP Cookie
- POST
13.2 SOAP
SOAP是基于XML的简易协议,可使用程序在HTTP之上进行信息交换。
SOAP是用于访问网络服务的协议。
14 客户端功能
- html
- 超链接
- 表单
- css
- javascript
- VB
- 文档对象模型(DOM)
- Ajax
- json
- 同源策略
- web 2.0
- 浏览器扩展技术
15 编码方案
15.1 URL编码
URL只允许使用US-ASCII字符集中的可打印字符(0x20~0x7e)
任何URL编码的字符都以%为前缀。
- %3d 代表=
- %25 代表%
- %20 代表空格
- %0a 代表换行
- %00 代表空字节
- +号代表URL编码的空格
15.2 Unicode编码
16Unicode编码以%u为前缀
- %u2215代表/
15.3 HTML编码
- " 代表 "
- &apos 代表’
- & 代表&
- < 代表 <
- > 代表 >
使用它的十进制ASCII码进行HTML编码
使用十六进制的ASCII码进行编码
15.4 Base64编码
通过进行SMTP进行安全传输。
Base64编码将输入数据转换成3个字节块。
15.5 十六进制编码
将字符转化为16进制
15.6 远程和序列化框架
- Flex和AMF
- Silverlight和WCF
- java序列化对象