unionID是什么UnionID 是微信为同一开放平台账号下的所有应用如小程序、公众号、APP提供的统一用户标识。同一个微信用户在这些不同应用中获得的 UnionID 是相同的。即一个公司开发者账号在微信开放平台下同时拥有“商城小程序”和“会员服务公众号”通过 UnionID 就能识别出这两个应用中的用户是同一人从而实现订单、积分等数据的同步。打开靶场也有对unionid的介绍。相似概念还有OAuth2 授权流程中的 clientIdappid)、openId、unionId、userId.具体差异可以看OAuth2 授权流程中的 clientId、openId、unionId、userId 都是干嘛的Sa-Token v1.40 预览新增unionid支持_哔哩哔哩_bilibili题解URL的格式开发者工具可以看到排行榜里隐藏的unionID结合URL看我们可以进行一个替换完成一些越权。因为admin看起比较特殊所以用admin的unionID试了一下。显示出flag下面也是有大佬顺着这个思路打出实战了防范防范的核心是严格区分“身份标识”与“认证凭证”。1. 使用动态凭证进行身份验证服务器绝不能仅凭 UnionID 或 OpenID 来认证用户。正确的流程是小程序端调用 wx.login 获取临时 code服务端使用 code 和 AppSecret 调用微信 auth.code2Session 接口换取 openid、unionid 和会话密钥 session_key。服务端应基于 session_key 生成自己的、有时效性的登录态令牌如 JWT返回给客户端后续请求均基于此令牌鉴权。2. 严格保护敏感凭证禁止泄露AppSecret 和 session_key 绝不能出现在小程序前端代码中也不应下发给小程序。禁止明文传输绝对禁止在 URL、请求参数或响应体中直接传递 OpenID 或 UnionID。所有敏感数据都应通过加密通道传输。服务端校验服务端在收到 code 后必须严格调用微信官方接口进行校验并核对返回的 unionid 与 openid 的一致性防止 code 被篡改或重用。3. 遵循最小权限原则仔细审查所有接口的返回数据确保不返回业务逻辑中非必需的敏感标识符如 UnionID。仅在服务端内部用于数据关联不暴露给客户端。最近背NISP老是背到你OvO)
