HTTP protocol introduction
HTTP 协议
HTTP协议属于应用层协议,其设计目的是为了方便文本内容的分享与发布。HTTP协议是Web资源共享的基础,与URL(文档地址定位符),HTML共同构建了Web世界。
HTTP协议属于点到点通信协议,请求访问资源的一端称为客户端,提供资源相应的一端称为服务器。
HTTP协议方法
- GET:请求访问资源。
- POST:传输主体内容。
- PUT:传输内容,幂等传输。
- HEAD: 获得报文首部,用于确认资源有效性和更新日期。
- DELETE: 删除内容。
- OPTIONS: 询问资源支持方法。
- TRACE:追踪路径,用于计算客户端到服务器端的跳数。
- CONNECT: 要求用socket协议连接代理。
HTTP方法本身是无状态协议,为了支持复杂有状态场景,引入了Cookie技术,确保认证客户端通信的上下文是连续的。
HTTP状态码
类别 | 原因短语 | |
---|---|---|
1XX | Informational(信息性状态码) | 接收的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
HTTP协议架构中的转发功能节点
- 代理:代理服务器的基本行为是接收客户端发送的请求转发给其他服务器,不改变请求URI。分为两类:
- 缓存代理:缓存内容。
- 透明代理:纯粹内容转发,不做缓存。
- 网关:网关为通信链路上的服务器提供非HTTP协议连接,例如与信用卡结算系统联动,数据库联动等。
- 隧道:隧道的建立能够确保客户端与服务器之间安全的通信。也能扩展HTTP通信协议,例如支持推送功能等等。
HTTPS
HTTP协议的缺点:
- 明文信息会被窃听;
- 无法验证通信方身份,会被伪装;
- 无法验证报文的完整性,会被篡改。
HTTP over SSL/TSL
SSL/TSL协议独立与HTTP协议,存在于HTTP和TCP协议之间,在建立HTTP连接之前,先建立SSL通信机制,交换加密密钥,从而在HTTP通信报文可以进行加密传输。
HTTPS 协议通信握手/分手协议步骤:
握手主要分为4个阶段:
- SSL证书请求,及公钥获取。<= 由于非对称加密机制的效率较低,安全性高,只用作密钥交互。
- 客户端密钥加密发送。
- 服务器端密钥确认。
- 数据传输… <= 数据传输阶段的加密是基于协商确定的对称密钥发送,效率较高。
WebSocket协议
Web浏览器支持的全双工通信协议,在HTTP部首加入upgrade:websocket字段,服务器通过返回状态码101 swtiching protocols响应连接,一旦服务器与客户端建立WebSocket协议的通信连接,之后所有的通信都用这个专用协议进行。
- 推送功能: 服务器可以直接发送数据到客户端。
- 减少通信量:保持连接的状态减少HTTP协议的连接开销。
用户认证问题
HTTP/1.1常见的认证方式如下:
- BASIC认证:直接提交用户名密码完成认证。
- DIGEST认证:客户端根据服务器端的质询码生成响应码完成认证。
- SSL客户端认证:凭借HTTPS的客户端认证证书完成认证。
- FormBase认证:在用户登录信息以表单形式提交后,服务器端发放Session ID用于用户认证状态的绑定和保持。
- Kerberos认证:
- NTLM认证:
- SSO认证:
Web安全问题
- 跨站脚本工具XSS:通过执行非法HTML标签/JS脚本进行攻击。
- 表单中插入非法标签执行JS脚本。
- 基于用户Cookie的窃取攻击
- SQL注入攻击:通过加入SQL结束符,强制加入SQL语句执行。
- OS命令攻击:通过Shell脚本注入执行系统命令。
- HTTP部首注入攻击:通过访问URL加入换行符,注入HTTP首部字段进行攻击。
- Cookie设置字段生效。
- HTTP响应截断攻击,强制显示伪造内容。
- 邮件首部注入攻击:
- BCC邮件泄露。
- 目录遍历攻击: 访问无疑公开的文件目录。
- 远程文件包含漏洞:引入其他包,例如System包进行代码污染。