http 学习
网络基础
- IP(Internet Protocol) 网际协议
- TCP(Transmission Control Protocol) 传输控制协议,面向连接的,可靠的协议
- UDP(User Datagram Protocol) 用户数据报协议
- URI(Uniform Resource Identifier) 统一资源定位符
- DNS(Domain Name System) 提供域名与IP地址之间的解析
- 网络分层协议(应用层、传输层、网络层、链路层、物理层)
http请求支持的方法
- GET
- POST
- PUT
- HEAD 获取报文首部
- DELETE
编码提升传输速率
- 压缩传输的内容编码
- gzip(GNU zip)
- compress(UNIX系统标准压缩)
- deflate(zlib)
- identity(identity)
- 分割发送的分块传输编码
http状态码
-
2XX 成功
- 200 OK
- 204 No Content 请求处理成功但没资源返回
- 206 Partial Content 对资源的某一部分请求
-
3XX 重定向
- 301 Moved Permanently 资源的URI已更新,永久性重定向
- 302 Found 资源临时重定向
- 303 See Other 资源URI已更新,303状态码明确表示客户端应该采用GET方法获取资源
- 304 Not Modified 服务端资源未改变,可以直接使用可以的未过期的缓存
-
4XX 客户端错误
- 401 Bad Request 客户端错误,一般是参数格式错误
- 401 Unauthorized 没有权限
- 403 Forbidden 禁止访问
- 404 Not Found 资源未找到
-
5XX 服务端错误
- 500 Internal Server Error
- 502 Bad Gateway 网关或代理服务器错误
- 503 Service Unavaliable 服务端无法处理请求
代理
接受客户端请求转发给服务端,利用缓存技术减少网络带宽的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要目的
- 缓存代理 预先将资源的副本保存在代理服务器上
- 透明代理 不对报文做任何加工
HTTP首部
-
通用首部
- Cache-Control 指定缓存机制
- Connection 管理持久连接
- Date http报文创建的日期和时间
- Pragma: === Cache-Control
- Transfer-Encoding 传输报文主体时采用的编码方式,仅对分块传输编码有效
-
请求首部
- Accept 通知服务器用户代理能够处理的媒体类型及媒体类型的相对优先级
- Accept-Charset 通知服务器用户代理支持的字符集以及字符集的优先顺序
- Accept-Encoding 告知服务器用户代理支持的内容编码及内容编码的优先顺序(gzip, compress, deflate)
- Accept-Language 告知服务器用户能够处理的自然语言以及优先级
- Authorization 告知服务器用户代理的认证信息
- Expect
- Form
- If-Match
- If-Modified-Since
- If-Range
- If-Unmodified-Since
- Max-Forwords 指定经过服务器的最大数目
- Proxy-Authorization
- Range 请求的范围
- Referer 请求原始资源的URL(网站的url)
- TE 客户端能处理的编码方式以及相对优先级
- User-Agent 创建请求的浏览器和代理的名称
-
响应首部
- Accept-Ranges
- Age 源服务器在多久前创建了资源
- ETag
- Loation
- Proxy-Authenticate
- Retry-After 告知客户端多久之后再次发送请求
- Server 服务器应用程序的信息
- Vary 对缓存进行控制
-
实体首部字段
- Allow 通知客户端请求资源指定的方法
- Content-Ecoding 实体主体的编码方式
- Content-Language 实体主体使用的自然语言
- Content-Length 实体主体部分的大小
- Content-Location 报文主体部分相对应的URI
- Content-MD5
- Content-range 告知客户端作为相应返回的实体的哪个部分符合范围请求
- Content-Type 实体主体内对象的媒体类型
- Expires 资源失效日期
- Last-Modified 资源最终修改时间
-
为Cookie服务的首部字段
- Set-Cookie 开始状态管理所使用的cookie信息
- Cookie 保存在用户本地,服务器接受到的cookie信息
HTTPS
-
HTTP缺点
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
-
HTTPS(HTTP secure)
- HTTP
- SSL加密
- 认证
- 完整性保护
-
HTTPS缺点
- 通信慢 除了http请求还行进行ssl通信,整体处理通信量增加
- 大量消耗cpu和内存资源,导致处理速度变慢, 对报文加解密消耗资源
用户身份验证
-
BASIC认证(不安全)
- 客户端发生请求
- 返回状态码401告知客户端需要进行认证
- 用户ID和密码以Base64方式编码发送
- 成功后返回状态码200,失败返回状态码401
-
DIGEST认证(不安全)
- 认证要求
- 服务端发送临时质询码,和告知需要认证的状态码401
- 发送摘要以及由质询码计算出的响应码
- 认证成功返回状态码200,失败则再次发送状态码401
-
SSL认证
- 收到需要认证资源请求,服务器发送报文要求客户端提供证书
- 客户端发送证书
- 服务器验证证书通过后,客户端可领取证书内客户端的公钥,然后开始HttPS加密通信
-
基于表单认证(Session管理及Cookie应用)
- 客户端发送用户名密码
- 服务端向用户发放session ID,
- 客户端发送含session id的cookie
- 服务端通过session id来判定对方的真实用户
web攻击技术(web安全)
-
因输出值转义不完全引发的安全漏洞
- 跨站脚本攻击
- 利用虚假页面获取用户表单信息
- sql注入攻击
- 输入框中填写非法的sql语句
- os命令注入攻击
- 在能调用shell函数的地方输入非法os命令
- http首部注入攻击
- 在响应首部字段内插入换行,添加任意响应首部或主题的一种攻击
- 邮件首部注入攻击
- 向邮件内部添加非法内容的攻击
- 目录遍历攻击
- 对本无意对外公开的目录,通过非法截断期路径后,达成访问目的的攻击(可使用../等相对路径定位到绝对路径)
- 远程文件包含漏洞
- 当部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的url充当依赖文件,让脚本读取之后运行任意脚本
- 跨站脚本攻击
-
设计上的缺陷引发的安全漏洞
- 强制浏览
- 不正确的错误消息处理
- web应用错误信息包含对攻击者有用的信息
- 开发重定向
- 通过修改重定向地址跳转到恶意的地址
-
因会话管理疏忽引发的安全漏洞
- 会话劫持
- 拿到用户的ID,伪造成用户,达到攻击的目的
- 会话固定攻击
- 强制用户使用攻击者指定的会话ID
- 跨站点请求伪造
- 会话劫持
-
其他安全漏洞
- 密码破解
- 点击劫持
- dos攻击
- 后面程序