Web安全
计算机网络
物理层
数据链路层
网络层
运输层(传输层)
应用层
基础漏洞
01前端基础【HTML】
02前端基础【CSS】
03后端基础【PHP速通】
04后端基础【PHP面向对象】
05MySQL基础操作
06前后端联动【代码练习】
07SQL注入概述
07SQL 注入类型
08SQL注入 Labs
08SQL注入速查表
09XSS
09XSS【概述版】
09XSS Labs
10跨站请求伪造【CSRF】
11服务器端请求伪造【SSRF】
12XML 外部实体注入【XXE】
13代码执行漏洞
14命令执行漏洞
15文件包含漏洞
16文件上传漏洞
17反序列化漏洞
18业务逻辑漏洞
19未授权访问漏洞集合
20跨源资源共享【CORS】
21SSTI模板注入
22并发漏洞
23点击劫持【Clickjacking 】
24请求走私
25路径遍历
26访问控制
27身份验证漏洞
28WebSocket
29Web缓存中毒
30HTTP 主机头攻击
31信息泄露漏洞
32原型污染
33NoSQL注入
小程序
小程序抓包
SessionKey
Appsecret与access_token
openid
数据库
MySQL
Oracle
MongoDB
Redis
PostgreSQL
SQL server
中间件
Nginx
Apache HTTP Server
IIS
Tomcat
框架
ThinkPHP
Spring
Spring Boot
Django
访问控制
身份认证(Authentication)
授权(Authorization)
单点登录(SSO)
零信任(ZTA)
分布式身份(DID)
-
+
首页
SessionKey
## 定义 SessionKey 是由 微信服务器(WeChat Server) 生成的、用于标识 “小程序用户 - 开发者服务器” 之间临时会话的对称加密密钥。 核心定位是: - 作为 “中间凭证”,连接微信服务器的用户身份认证与开发者服务器的业务逻辑; - 仅用于开发者服务器端,不可在小程序客户端(如 JS 代码)中存储或传输; - 生命周期与用户登录态绑定,具有临时性和唯一性,重新登录会生成新的 SessionKey。 ## 两个核心作用 > 解密用户敏感数据 小程序通过 wx.getUserProfile()、wx.getPhoneNumber() 等接口获取的用户信息,分为 “非敏感数据” 和 “敏感数据”: - 非敏感数据:如用户昵称、头像(默认分辨率)、性别等,可直接通过接口返回的 userInfo 字段获取; - 敏感数据:如用户手机号、UnionID(跨公众号 / 小程序的统一用户标识)、高清头像 URL 等,会被微信服务器用 AES-128-CBC 算法加密,生成 encryptedData(加密数据)和 iv(初始向量)。 开发者必须在服务器端使用 SessionKey + iv,才能解密 encryptedData,得到原始的敏感数据。 那么问题来了:攻击者只要拿到encryptedData、iv、SessionKey,就可以解密用户的手机号。 ``` encryptedData(加密手机号) + iv(初始向量) + SessionKey(密钥) → 解密 → 138****1234(原始手机号) ``` > 验证登录态有效性 小程序的登录态并非由 SessionKey 直接维持,而是开发者服务器基于 SessionKey 生成的 “自定义登录态”(如 sessionId)。但 SessionKey 是验证该登录态是否有效的核心依据: - 当用户后续发起请求(如支付、个人中心操作)时,小程序会携带开发者服务器生成的 sessionId; - 开发者服务器可通过 “微信登录态校验接口”(如 wx.checkSession 客户端预校验,或服务器端调用微信接口),结合存储的 SessionKey 验证该 sessionId 是否有效(如未过期、未被篡改); - 若 SessionKey 过期或失效,开发者需引导用户重新登录(调用 wx.login())以获取新的 SessionKey。 ## 任意账户登录  解密之后,可以换手机号再进行加密,将原来的data进行替换,如果登录成功,则为任意账户登录。 
毛林
2025年10月27日 18:16
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码