> 技术文档 > 第十三天(http和https 身份验证鉴权技术)

第十三天(http和https 身份验证鉴权技术)

http和https 数据包的区别加密和不加密

用虚拟机中的wireshark 抓本机的数据包,虚拟机要和本机在同一网段下才能抓到本机的数据包

在下面随便输入用户名和密码

 在搜索框中输入http ,找到post提交的数据

鼠标右键,找到追踪流,tcp 流

可以查看到数据包的内容

下面这个是一样的系统,但是是https

HTTPS:通过SSL/TLS协议对数据进行加密,确保数据在传输过程中不被第三方截获和篡改。

先用cmd 打开命令窗口 再ping一下 m.int-kaiyunsports.com

在搜索框中输入 ip.addr == ip地址

用f12时是可以看到未加密的数据的,因为这时还没经过加密的步骤

身份验证鉴权技术

oauth2 技术

流程

第一流程 向服务端发送请求,拿到授权码,返回给客户端

第二流程,客户端拿到授权码后,去服务端拿去用户信息,拿到信息后返回给客户端

四种授权模式

模式

适用场景

特点

授权码模式

Web服务器应用

最安全,通过后端交换令牌

简化模式

纯前端应用

直接返回令牌,无刷新令牌

密码模式

受信任的客户端

用户直接提供账号密码

客户端模式

机器对机器

无用户参与,用客户端凭证获取令牌

参数

1. response_type=code

  • 含义:指定客户端期望的响应类型
  • 作用
    • 告诉授权服务器:\"我需要一个授权码\"
    • 这是授权码模式的标志性参数
    • 服务器会返回一个短期有效的授权码(而不是直接返回访问令牌)
  • 为什么重要
    • 提供额外的安全层,防止令牌被前端直接暴露
    • 授权码有效期很短(通常5分钟),只能使用一次

2. client_id

  • 含义:客户端的唯一标识符
  • 作用
    • 授权服务器通过这个ID识别是哪个应用在请求
    • 与注册时分配的ID匹配才能继续流程
  • 为什么重要
    • 防止未注册应用发起请求
    • 授权服务器会根据这个ID检查应用的合法性
    • 示例值:5642345-abc123def456.apps.googleusercontent.com

3. redirect_uri

  • 含义:授权完成后的回调地址
  • 作用
    • 用户授权后,浏览器将被重定向到这个URI
    • 授权码会作为参数附加到这个URI上
  • 为什么重要
    • 安全关键:必须与应用注册时声明的重定向URI精确匹配
    • 防止授权码被发送到恶意网站
    • 示例:https://your-app.com/oauth/callback

4. scope(可选但推荐)

  • 含义:请求的权限范围
  • 作用
    • 定义客户端需要访问的资源类型
    • 告诉用户应用请求哪些权限
  • 为什么重要
    • 实现最小权限原则,只请求必要权限
    • 用户可以看到并控制授权范围
    • 示例:
      • openid profile email(基础身份信息)
      • https://www.googleapis.com/auth/calendar(谷歌日历权限)

5. state(强烈推荐)

  • 含义:客户端生成的随机字符串
  • 作用
    • 防止CSRF攻击:确保返回的响应来自预期的请求
    • 保持请求状态:重定向回来后可以恢复上下文
  • 为什么重要
    • 安全必备参数,防止跨站请求伪造
    • 生成要求:
      • 使用加密安全随机数生成器
      • 足够长(推荐16-32字节)
      • 绑定用户会话
    • 示例值:st=8df7a9b3c4e5f6a7

进行抓包分析:

这里可以看到登录时支持第三方应用扫码登录,应该是用了oauth 技术

打开reqable 开始抓包,然后扫码登录

将请求复制出来,这里只保留了有用的,这里可以看到是在请求微信,从微信上拿授权码,然后在返回到 一唯科技 - 为您提供简单易用的音视频软件 这个网址上

https://open.weixin.qq.com/connect/qrconnect?appid=wx37495c112bb46471&scope=snsapi_login&redirect_uri=https://vip.ieway.cn/wxweb?page=/evplayer2.html&state=abc123&login_type=jssdk

找到数据包中 一唯科技 - 为您提供简单易用的音视频软件 这个网址 ,这里就拿到了code ,就可以从微信上面拿去用户信息了

安全漏洞问题:

1、redirect_url 校验不严格可能导致code被劫持到恶意网站(fuzz各种bypass方式)

2、client_id与redirect_url 不一致造成滥用劫持

3、A应用生成的code可以用在B应用上

4、state未设置csrf防护,导致csrf风险

5、scope提权,将低scope权限的code用于高权限场景

6、HTTP劫持,网络层中间人攻击

7、点击劫持:通过点击劫持,恶意网站会在以下位置加载目标网站: 透明 iFrame(参见 [ iFrame ])覆盖在一组虚拟的顶部 精心构造的按钮直接放置在 目标站点上的重要按钮。当用户单击可见的 按钮,他们实际上是在单击一个按钮(例如“授权” 按钮)在隐藏页面上。

Authorization头:

参考:https://juejin.cn/post/7300812626279251987

授权方案:

1、Basic认证

2、Digest认证

3、Bearer认证 也被称为Token(令牌)认证

原理
使用访问令牌代替用户凭证
格式
Authorization: Bearer

特点

✅ 令牌可设置短有效期

✅ 支持权限细分(scopes)

🔄 需要令牌颁发/刷新机制

🔒 依赖HTTPS保护令牌

4、JWT认证 JWT(JSON Web Token)认证与Bearer认证的原理是一样的

自包含的签名令牌,包含三部分:

例如:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.KMUFsIDTnFmyG3nMiGM6H9FNFUROf3wh7SmqJp-QV30

特点

✅ 无状态:服务端无需存储会话

🔍 可包含用户信息(Payload)

🔐 防篡改:通过签名验证完整性

❌ 令牌无法主动撤销(需短有效期)

5、API密钥认证

6、双因素认证

7、其他一些认证方式

安全漏洞问题:

JWT攻防,Token劫持等