HTTP/HTTPS
加密方式
HTTP:使用明文传输,HTTP协议,数据在传输过程中可以被任何人截获和查看。
HTTPS:通过SSL/TLS协议对数据进行加密,确保数据在传输过程中不被第三方截获和篡改。
身份验证
HTTP:不需要进行身份验证,任何人都可以访问网站。
HTTPS:通过数字证书和SSL/TLS协议验证服务器的身份,防止”中间人攻击“。
端口号
HTTP:默认使用80端口。
HTTPS:默认使用443端口,提供更高的安全性。
身份验证鉴权技术
主流技术
- Cookie
- Session
- Token
- JWT
- OAuth2
参考:https://mp.weixin.qq.com/s/Z6rt_ggCA8dNVJPgELZ44w
应用场景
Cookie+Session:简单,建议在内网使用;
Token:相对完善,推荐在跨域外网使用;
JWT:推荐使用,常用在SSO单点登录中;
OAuth:灵活方便,对于第三方系统登录更友好。
OAuth2技术
概念
授权框架,使网站和Web应用程序能够请求对另一个应用上的用户帐户进行有限访问。至关重要的是,OAuth允许用户授予此访问权限,而无需向请求应用程序公开其登录凭据。这意味着用户可以微调他们想要共享的数据,而不必将其帐户的完全控制权移交给第三方。引用第三方登陆,如:QQ、微信、微博登陆
四种验证模式
- authorization_code 授权码模式

- implicit code 简单模式
- password 密码模式
- client_credentials 客户端模式
安全漏洞问题:
例:
GET /connect/qrconnect?
appid=wx37495c112bb46471 ← client_id(微信 AppID ev应用)
&scope=snsapi_login ← 请求的权限范围
&redirect_uri=https://vip.ieway.cn/wxweb?page=/evplayer.html ← 回调地址,跳转地址
&state=abc123 ← 防 CSRF 的随机串
&login_type=jssdk&self_redirect=default&...
GET /wxweb?page=/evplayer.html
&code=011zmzFa1KunvM0LM5Ia1VRUuq3zmzFx ← 授权码
&state=abc123 ← 原样带回
| 参数 | 作用 | 对应 OAuth2 概念 |
|---|---|---|
appid | 微信分配给客户端的唯一标识 | client_id |
scope | 申请获取用户哪些信息 | scope |
redirect_uri | 授权成功后跳回哪里 | redirect_uri |
state | 随机串,回来时要原样带回 | state |
- redirect_url 校验不严格导致code被劫持到恶意网站(fuzz各种bypass方式)
redirect_uri=xiaodi8.com?code=011zmzFa1KunvM0LM5Ia1VRUuq3zmzFx劫持用户,授权码请求官方获取用户权限 - client_id与redirect_url 不一致造成滥用劫持
- A应用生成的code可以用在B应用上
- state未设置csrf防护,导致csrf风险
- scope提权,将低scope权限的code用于高权限场景
scope=allall权限,接管用户 - HTTP劫持,网络层中间人攻击(少见)
- 点击劫持(少见):通过点击劫持,恶意网站会在以下位置加载目标网站: 透明 iFrame(参见 [ iFrame ])覆盖在一组虚拟的顶部 精心构造的按钮直接放置在 目标站点上的重要按钮。当用户单击可见的 按钮,他们实际上是在单击一个按钮(例如“授权” 按钮)在隐藏页面上。
案例:https://mp.weixin.qq.com/s/Bht-vvsXSl8Ios8X74-q3g
Authorization头
WWW-Authenticate Response响应标头 && Authenticate Request请求标头
参考:https://juejin.cn/post/7300812626279251987‘
授权方案:
- Basic认证 弹窗要求账号密码登陆 fofa语法:”WWW-Authenticate”

- Digest认证
- Bearer认证
- JWT认证
- API密钥认证
- 双因素认证
- 其他一些认证方式
安全漏洞问题
JWT攻防,Token劫持等
本节知识点&思维导图
网站协议-http/https安全差异(抓包)
身份鉴权-HTTP头&OAuth2&JWT&Token

