HTTP 协议基础知识

http 1.1 协议基础知识;https 安全协议加密、解密处理;

http 协议基础

  浏览器地址栏中输入URL访问一个HTML页面,首页通过DNS域名系统解析到对应的服务IP信息;由HTTP协议生成的请求报文传输至传输层(TCP协议);TCP将数据字节流传输至网络层(IP协议),网络传输至(经过网卡、网线、路由器等)目标机器。

TCP/IP协议层
  • 应用层:提供给用户的服务通信。比如:FTP(文件传输协议)、DNS(域名系统)、HTTP(超文本传输)
  • 传输层:TCP(可靠传输)、UDP
  • 网络层:传输数据包,确定传输路线。
  • 数据链路层:连接网络的硬件部分,包括操作系统、设备驱动、网卡、光纤等。

请求报文有请求方法、请求URI、协议版本、可选的请求首部字段和实体内容。

// 方法、URI、协议版本
POST /user HTTTP/1.1

// 请求头部字段
HOST:localhost
Connection:keep-live
Content-Type:application/json
content-Length:10

// 实体内容
name=admin

响应报文由协议版本、状态码、状态解释语、响应首部字段及实体内容构成。

// 协议、状态码、状态解释语
HTTP/1.1 200 OK

// 响应首部
Date:Sun, 16 Aug 2020 03:16:17 GMT
Content-Length:430
Content-Type:application/json; charset=UTF-8

// 实体内容
{“id”:"321d321sa443",//...}
http 方法
方法释义
GET获取资源
POST传输实体内容
PUT传输文件将报文主体中的文件内容保存到请求的URI指定的位置。
HEAD获取报文首部信息,不返回主体内容用于确认URI的有效性及资源的更新日期
DELETE删除文件按请求URI删除指定的资源
OPTIONS询问针对请求URL支持的方法
TRACE追踪请求连接过程中的一系列操作XST(跨站追踪)攻击
CONNECT要求使用隧道协议连接代理,SSL(安全套接层)或TLS(传输层安全)加密通信内容进行传输
提升传输速率

通过在传输时编码,能有效处理大量的访问请求。

  • 内容编码压缩传输:gzip(GNU zip)/compress(UNIX系统的标准压缩)/deflate(zlib)/identity(不进行编码)
  • 分割传送的分块传输编码:将实体内容分成多个部分,每一块需要使用十六进制标记快大小;最后一块使用“0”标记。
  • 多种数据类型的数据对象集合,文本、视屏、图片等,格式不限于:multiple/form-data 、multiple/byteranges
  • 范围请求部分内容,比如断点续传;通过首部字段 Range指定请求资源的字节范围。
  • 内容协商,客户端和服务端通过首部字段交涉判断。
http 状态码
状态码释义说明
1**信息类状态码请求正在处理
2**成功状态码请求正常处理完毕200:响应成功返回
204:响应成功,响应没有实体内容
206:范围请求
3**重定向需要进行附加操作已完成请求301:永久性重定向,资源已分配新的URL
302:临时性重定向,希望采用get方法请求资源
303:使用get方法从另一个URI获取资源
304:资源未更新、可使用缓存
307:临时重定向
4**客户端错误400:请求存在错误
401:需要认证
403:不允许访问该资源
404:未找到指定资源
5**服务端错误500:服务端存在错误
503:服务器无法处理请求,处于超负载或停机维护
http 首部字段

首部字段重复,会根据浏览器不同处理不同。

通用首部字段:

字段名释义请求指令响应指令
Cache-Control控制缓存的行为no-cache:强制像服务器再次验证
no-store:不缓存任何请求或响应内容
max-age=[秒]:响应最大Age值
public:向任意方提供缓存
private:仅向特定用户返回响应
no-cache:缓存前先确认有效性
no-store:不缓存请求或响应内容
max-Age=[秒]响应的最大Age值
Connection逐跳首部、连接管理管理不转发的首部字段名
close:断开连接
keep-live:持续连接
Date报文日期时间
Pragma报文指令
Trailer报文末端首部一览
Transfer-Encoding指定报文主体传输编码方式
Upgrade协议升级
Via代理层相关信息
Warning错误通知110:代理返回一过期的资源
111:代理验证资源有效性时失效
112:代理与互联网连接被故意切断

请求首部字段:

字段名释义指令
Accept用户代理可处理的媒体类型文本:text/html、text/plain/text/css
图片:image/jpeg、image/gif
视频:vide/mpeg
二进制文件
Accept-Charset优先的字符集
Accept-Encoding优先的内容编码gzip/compress/deflate/identity
Accept-Language优先的语言
AuthorizationWeb认证信息
Expect期待服务器的特定行文
From用户的电子邮箱
Host请求资源所在服务器
if-Match比较实体标记(ETag)
if-Modified-Since比较资源的更新时间
if-None-Match比较实体标记(不匹配)
if-Range发送实体byte的范围请求
if-Unmodified-Since比较资源的更新时间(不匹配)
Max-Forwards最大传输逐跳数
Proxy-Authorization代理服务器要求的客户端信息
Range实体范围请求
Referer
TE传输编码的优先级
User-Agent客户端信息

响应首部字段:

字段名释义
Accept-Range是否接受字节范围请求
Age推算资源创建经过时间
ETag资源的匹配信息
Location令客户端重定向至指定URI
Proxy-Authenticate代理服务器对客户端的认证信息
Retry-After对再次发起请求的时机要求
ServerHTTP服务器的安装信息
Vary代理服务器缓存的管理信息
WWW-Authenticate服务器对客户端的认证信息

实体首部字段:

字段名释义
Allow资源支持的HTTP方法
Content-Encoding实体主体适用的编码方式
Content-Language实体主体的自然语言
Content-Length实体主体内容的大小(字节数)
Content-Location替代资源的URI
Content-MD5实体主体的报文摘要
Content-Range实体主体的位置范围
Content-Type实体主体适用的媒体类型
Expire实体主体过期的日期时间
Last-Modified资源的最后修改日期

端到端首部必须转发到目标服务器;逐跳首部只对单次转发有效,包括:Connection、Keep-Alive、Proxy-Authenticate、Proxy-Authori、Trailer、TE、Transfer-Encoding/Upgrade。其他均为端到端首部。

Cookie

用作HTTP无状态特性的补充。可用于用户信息识别及状态管理。

字段名释义指令
Cookie服务器接受到的请求Cookie信息
set-Cookie服务器响应的状态管理Cookie信息NAME=VALUE:赋予cookie的名称、值
expires=DATE:cookie有效期
path=PATH:服务器上的文件目录
domain=域名:默认服务器域名
Secure:仅在HTTPS安全通信下发送cookie
HttpOnly:Cookie不能被JS脚本访问
扩展首部字段
字段名释义指令
X-Frame-Options响应首部,控制页面Frame标签显示问题,防止点击劫持攻击DENY:拒绝
SAMEORIGN:同源域名下页面访问
X-XSS-Protection响应首部,防止跨站脚本攻击(XSS)0:无效
1:有效
DNT请求首部,拒绝个人信息收集,拒绝精准广告追踪0:同意追踪
1:拒绝被追踪
P3P响应首部,在线隐私偏好,保护用户隐私
HTTPS

http协议的不足:

  1. 通信使用明文传输,内容可能会被窃听;
  2. 无法验证通信方的身份,遭遇跨站点伪造请求攻击;
  3. 无法验证报文完整性,可能会被篡改(中间人共计,MITM);

那么https是什么:

  1. https是由http协议和SSL(安全套接层)组合对通信加密,拥有认证机制。不是新协议
  2. https采用混合加密机制:共享秘钥加密和公开密钥加密混合的加密机制。

    使用公开秘钥通信,确认安全后,交换共享秘钥;后续的通信使用共享秘钥加密;

HTTP 2.0

改善用户在使用时的速度体验:通信速度、性能。

7项技术及讨论:

  • 多路复用 - SPDY
  • TLS义务化 - Speed+Mobility
  • 协商 - Speed+Mobility,Friendly
  • 客户端拉曳/服务端推送 - Speed+Mobility
  • 流量控制 - SPDY
  • WebSocket - Speed+Mobility
web 攻击

主动攻击,主动访问web应用程序,传入攻击代码:SQL注入统计、OS命令注入攻击
被动攻击,利用圈套策略执行了攻击代码:跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、HTTP首部注入攻击

XSS

攻击者使用动态创建的HTML运行非法HTML片段或JavaScript脚本进行攻击。

造成影响:

  1. 窃取用户个人信息。
  2. 利用脚本获取用户Cookie值
  3. 显示伪造的文本或 图片。
SQL

通过运行非法的SQL语句进行攻击。

造成影响:

  1. 非法查看或篡改数据库内的数据
  2. 规避认证
  3. 执行和数据库服务器业务关联的程序
HTTP 首部注入攻击

拦截响应并在相应中添加首部字段。

造成影响:

  1. 设置任何Cookie信息。
  2. 重定向至任意URL
  3. 显示任意响应主体。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heroboyluck

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值