在挖小程序漏洞的时候会遇到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
2
3
4
5
如下图
1.在前台第一步需要用户登录,会调用wx.login去获取一个code。
2.然后后端将code和appid和secret传入微信服务器(与小程序服务器区别)
appid和secret是在开发程序时得到的,与用户无关。
3.微信服务器返回openid等信息。

同一个用户在每一个小程序的openid都是一样的。

用户在小程序a和小程序b得到的openid是一样的。
在这里插入图片描述

openid和unionid的区别

定义和作用:
OpenID:OpenID是微信对用户的唯一标识,用于在同一个小程序或公众号中唯一标识一个用户。
UnionID:UnionID是在微信开放平台上创建的一个开发者账号下所有应用的唯一标识,用于实现多个应用之间的用户关联。

生成方式:
OpenID:微信服务器会为每个用户在每个小程序或公众号中生成一个独立的OpenID。
UnionID:UnionID是由微信用户在微信开放平台上的多个应用之间关联生成的。

sessionkey

sessionkey作用

小程序在使用时,需要向微信服务器获取用户的信息,因此需要开启一个会话,而sessionkey作为一个密钥来解密信息。

session的作用过程

看到上图应该就可以知道,在向微信服务器传入appid,secret和code时得到sessionkey,然后小程序服务器可以拿着sessionkey和用户的登录信息去向微信服务器换取用户在微信服务器的信息。