网络基础知识02-HTTP协议

参考书:《图解HTTP协议》

HTTP协议

http是不保存状态的协议,要通过Cookie进行状态管理。

报文结构

请求行:请求方式 URI 协议版本

响应行: 协议版本 状态码 状态码的原因短句

报文传输,提升传输速率

1.报文主体压缩

  • 常见的内容编码格式:
    • gzip
    • compress
    • defalte
    • identity

2.报文主题切割

     将实体主体的功能进行切割为分块

HTTP协议响应码

类别 原因短语
1XX 信息性状态码
2XX 成功状态码
3XX 重定向状态码
4XX 客户端错误状态码
5XX 服务器错误状态码

响应的几种状态码

2XX

  • 204 请求处理成功,但是没有资源返回

  • 206 表示多重范围请求,例如图片总共7000字节,分成两部分请求1-4000,4000-7000

#首部字段
Range: bytes=1~4000

3XX

  • 301 永久重定向。
# 漏了最后的斜杠
http://example.com/sample
  • 302 临时重定向

  • 303 明确返回客户端应该采用那种请求方式

4XX 客户端请求

  • 400 请求报文中存在语法错误。

  • 401 表示需要认证

  • 403 服务器不允许访问,一般是请求方式不同造成的,是否POST请求用成了GET

  • 404 没找到资源

5XX 服务器错误

  • 500 系统出现bug

  • 503 表示服务器暂时处于超负载或者进行停机维护中。

HTTP 通用首部字段

  • Cach-Controller

-- 缓存请求指令

no-cache 指令的目的是为了防止从缓存中返回过期的资源,表示不会接收返回的缓存资源。

max-age 表示资源保存为缓存的最长时间

-- 缓存响应指令

# 缓存指令

public : 表示其他用户可利用缓存


private :表示响应特定的用户作为对象

  • Date 表明创建HTTP报文的日期和时间

  • Transfer-Encoding 表示传输编码方式

  • via 为了追踪客户端与服务器之间的请求和响应报文的传输路径。

  • Warning 告知用户一些与缓存相关的的问题警告。

  • Upgrade 表示指定完全不同的通信协议

请求和响应首部字段

请求首部字段

  • Accept 表示接收的资源

    • 图片 :image/jpeg;image.gif

    • 文本文件: text/html;text/plain

    • 视频文件: video/qicktime

    • 应用程序使用的二进制文件 application/octet-stream,application/zip

Accept:tex/html;q=0.3,text/html
  • Accepti-Charset 通知服务器用户代理的字符集及字符集的相对优先顺序。q表示权重

  • Accept-Encoding 表示用户代理支持的内容编码,gzip,defalte等

  • Accept-Language 服务器代理处理的语言集

  • Authorization 用户代理的认证信息

  • From 用来告知服务器代理的用户的电子邮件地址

  • Host 请求资源所在的互联网主机名和端口号

  • Max-Forwards 表示经过的请求转发

  • Referer 请求URI是从那个Web页面发起的。

    • 一般伪跨站请求就是判断这个字段,是否与应该请求的URI是否一直.

请求首部字段

  • Accept-Range 告知客户端服务器能处理的范围请求

  • Location 用域响应接收方请求URI位置不同的资源。 一般是重定向的URI

实体首部字段

    包含请求保温盒响应报文实体部分所使用的首部。

  • Allow 通知客户端支持的HTTP方法
Allow: Get , HEAD
  • Content-Encoding 告诉客户端,服务器对实体的主题部分选择的内部编码方式
Content-Encoding: gzip
  • Content-Length 实体部分的大小
Content-Length: 15000
  • Content-Type 表示实体对象的媒体类型

  • Expires 资源失效日期

  • Last-Modified 指明资源最终修改的时间

  • Cookie

字段名称 说明 首部类型
Set-Cookie 开始状态管理所使用的Cookie信息 响应首部字段
Cookie 服务器接收的Cookie信息 请求首部字段
Set-Cookie: name=value;secure// secure限制Web页面仅在HTTPS安全连接时,才可以发送Cookie

Set-Cookie: name=value;HttpOnly 防止跨站脚本攻击XSS

Cookie: status=enable

HTTPS

HTTP的缺点

  • 通信使用明文,内容可能被窃听

    • TCP/IP 是可能被窃听的网络
  • 不验证通信放身份,可能遭遇伪装

    • 任何人都能发起请求,造成海量请求的DOS(Denies of Service)攻击。
  • 无法证明报名的完整性,可能被篡改

HTTPS = HTTP + 加密 + 认证 + 完整性保护

  • HTTPS 并不是一种新的协议

    • HTTP 是 直接和TCP进行通信的

    • HTTPS 是 HTTP 通过SSL (Secure Socket Layer) 和 TLS (Transport Layer Security) 协议代替和TCP进行通信。

  • SSL 协议采用公开密钥加密 的方式

    • 使用两把密钥进行加密,一把私钥,一把公钥

    • 相对HTTP,HTTPS的速度比较慢。SSL通信比较慢, 并且会销号大量的CPU和内存;

  • HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密机制

    • 公开密钥需要认证,

  • HTTPS 的安全通信机制

常见的WEB攻击技术及漏洞

WEB攻击技术

  • 跨站脚本攻击

    非法的标签或者javascript脚本进行攻击。是预先设计好的。

    例如:

# 原始的表单
<btn click="login()" >

# 改变点击的事件
<btn click="login(),other()" >

<script>
other(){
//做一些其他的操作,获取登录信息
var username = document.getElementById('username');
var password = document.getElementById('password'); 
}
</script>

# 获取页面信息
<script src="......"/>
<script>
查询账户的钱

或者
获取cookie数据
var content = escape(document.cookie);
</script>


  • SQL注入攻击
# 正常的查询SQL
select * from order where username='zhangsan' and flag = 1

#传入错误参数  zhangsan' --
select * from order where username='zhangsan'--' and flag = 1
SQL语句的-- 表示注解的意思

  • HTTP首部注入攻击:向首部主体添加内容

    • 重置Location字段,让访问进行重定向

    • 修改cookie数据

    • 响应截断的方式进行攻击

# 对响应进行截断
%0D%0A%0D%0A是两个换行的分隔符号,

对响应数据进行修改Set-Cookie=123;%0D%0A%0D%0A<html><a>付款连接</a></html>


  • 文件遍历攻击

漏洞

  • 会话劫持

  • 会话固定攻击

  • 跨站点伪造请求

  • 密码破解

    • 通过网络试错

      • 穷举法
      • 字典攻法
    • 侵入系统获取加密算法

  • DOS 攻击,海量访问攻击。会让服务器瘫痪

原文地址:https://www.cnblogs.com/perferect/p/13381489.html