在挖小程序漏洞的时候会遇到openid等用户标识,因此了解openid和unionid等是什么必不可少。
开放平台
开放平台是指提供第三方开放API接口的平台,比如微信和QQ。我们在使用其他应用时肯定遇到过QQ登录,微信登录,类似于微信和QQ提供了一个开放API接口的平台。
unionid
应用中用户需要一个标识,unionid就是一个唯一用户标识。但是需要注意的是不同开放平台的unionid是不同的。即:
同一个用户在每一个开放平台对应唯一的unionid
我们在登录时就是获取unionid的过程,由于unionid的不同,所以不会出现登录到别人账号的情况
openid
openid的推出
在刚开始时小程序是可以直接获取unionid的,但是由于每个用户在开放平台的unionid都是唯一的,考虑到数据的安全性。于是在2021年,微信官方规定小程序不再直接获取用户的unionid。并且推荐了一种新的标识openid。
openid的构成
在小程序中openid是由三部分构成:appid,secret,code。
1 | 如下图 |
同一个用户在每一个小程序的openid都是一样的。
用户在小程序a和小程序b得到的openid是一样的。
openid和unionid的区别
定义和作用:
OpenID:OpenID是微信对用户的唯一标识,用于在同一个小程序或公众号中唯一标识一个用户。
UnionID:UnionID是在微信开放平台上创建的一个开发者账号下所有应用的唯一标识,用于实现多个应用之间的用户关联。
生成方式:
OpenID:微信服务器会为每个用户在每个小程序或公众号中生成一个独立的OpenID。
UnionID:UnionID是由微信用户在微信开放平台上的多个应用之间关联生成的。
sessionkey
sessionkey作用
小程序在使用时,需要向微信服务器获取用户的信息,因此需要开启一个会话,而sessionkey作为一个密钥来解密信息。
session的作用过程
看到上图应该就可以知道,在向微信服务器传入appid,secret和code时得到sessionkey,然后小程序服务器可以拿着sessionkey和用户的登录信息去向微信服务器换取用户在微信服务器的信息。