- TCP/IP
应用层(决定向用户提供服务时的通信活动,FTP、DNS、HTTP)、
传输层(提供处于网络链接中的两台计算机之间的数据传输,TCP、UDP)、
网络层(选择一条传输路线, IP)、
数据链路层(处理连接网络的硬件部分)
- 三次握手
发送 syn(synchronize)
接受 syn/ack (acknowledgement)
发送 ack 握手结束
- URL Uniform Resourse Locator
- ---客户端:请求报文
POST /form/index.html HTTP/1.1 方法 URL 协议
请求头部
内容
---服务端:响应报文
HTTP/1.1 200 OK 协议 状态码 原因短语(reason-phrase)
创建响应的时间 等响应首部文件
\n
资源实体(entity-body)
- HTTP 无状态:HTTP协议自身部队请求和响应之间的通信状态进行保存(为了快速处理大量的事务,确保协议的可伸缩性),但为了保存状态,有了Cookie
- HTTP 1.1方法:
GET获取资源
POST传输实体的主体
PUT传输文件(HTTP/1.1不带验证,一般不用此方法)
DELETE删除文件(与PUT相反,不带验证,一般不用,除非加验证或遵守REST
)
HEAD获取报文首部(同GET,只是不返回报文主体)
OPTION查询支持的方法
TRACE追踪路径(让WEB服务器端将之前的请求通信环回给客户端,不常用,外加容易引发XST: Cross-Site Tracing跨站追踪)
CONNECT要求用隧道协议连接代理(主要SSL TLS)(CONNECT 代理服务器:端口 HTTP版本)
持久链接HTTP keep-alive:没人提断开 就一直TCP连接
管线化pipelining:不等待响应,直接发送下一个请求
Cookie:服务端set-cookie 通知客户端保存cookie,以后客户端都会加上cookie,服务端收到后去记录对比
报文主体和实体主体的差异 P59
状态码
- SET-COOKIE
NAME=VALUE(必选),
expires=DATA(过期日期),
path=PATH(限制指定Cookie的发送范围的文件目录,
可以避开
),
domain=域名(
不指定域名反而更安全
),
Secure(限制HTTPS时才可以发送Cookie,省略时HTTP、HTTPS都可以),
HttpOnly(使JavaScript无法获得Cookie,防止跨站脚本攻击XSS(Cross-site scripting))
- HTTPS:SSL 加 HTTP, HTTP Secure or HTTP over SSL,身披SSL协议外壳的HTTP
- DoS:Denial of Service
- MITM:Man-in-the-Middle attack, 中间人攻击
- 用Cookie来管理Session, 发送包含Session的SET-COOKIE、COOKIE
- 主动攻击:SQL注入、OS命令注入
- 跨站脚本攻击(Cross-Site Scripting XSS)运行非法的HTML标签或JavaScript,虚假输入表单,脚本窃取Cookie,显示伪造的文章或图片。属于被动攻击
- SQL注入,对Web使用的数据库,用过运行非法的SQL而产生的攻击
- OS命令注入攻击,通过web应用执行非法的操作系统命令
- HTTP首部注入攻击(HTTP Header Injection),换行SET-COOKIE
- HTTP响应截断攻击 首部换行到body
- 邮件首部注入攻击
- 目录遍历攻击
- 会话劫持(推测、窃听、会话固定攻击)
- 跨站点请求伪造(Cross-Site Request Forgeries, CSRF),通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或者设定信息等某些状态更新,被动攻击