图17-使用微信信息登录
方式二和方式三是强账户体系,方式二类似微信公众号的授权机制,通过小程序获得的code和微信用户基本信息,到第三方服务器获取访问的token(第三方session),第三方服务器维护用户使用的session与微信session_key/openid的关联关系。图18为微信官方提供的登录实现时序图,图19为某小程序授权登录的请求过程。
图18-官方提供的授权登录实现方案
以上第一个请求通过code和微信基本用户信息到第三方服务器换取token,而后的请求通过token请求用户个人数据,如团购代金券使用历史记录。方式二不能将微信公众平台的appsecret或者session_key(属于敏感信息)传递到客户端,否则可能导致安全攻击。方式三属于小程序自身实现方式,依赖自身实现的安全性,与微信平台无关。
四.总结
说了这么多,大白也该总结一下了,大致如下8点:
1、框架上继承了微信成熟的JSAPI框架和底层的TBS浏览器内核;
2、小程序的关键信息完全由后台控制进行配置,如可访问的域名信息;
3、通用网络传输使用Https,并对访问域名进行校验控制,无法抵御攻击者在本地安装代理证书实施中间人攻击的威胁;
4、本地数据存储采用(KEY,VALUE)形式存放在DB,数据的保护继承了微信的数据库加密防护策略;
5、本地文件存储采用HASH映射机制进行文件定位,文件存储在外部存储,本身通过自定义算法实现完整性校验;
6、存在仿冒钓鱼小程序的可能,依靠于微信平台的审核监管能力;
7、针对特定小程序,由于是在微信平台生态中运行,小程序自身仍需对敏感数据进行安全防护;
8、小程序登录体系可以依赖微信接口和公众号平台,也可以由小程序自行实现。前者需要根据微信平台的安全规范实施,后者则由小程序自行控制安全性。
五.附录
下面大白补充一下上述文中4个附录内容:
附录1:小程序初始化后台配置信息
a target="_blank" href="/uploads/allimg/200608/143942P37_0.jpg">
附录3:request网络请求实现