第十三天(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劫持等