针对AppID、AppSecret账号信息泄露的情况,设计的安全方案。其实前后端交互都可以做参考,尤其是有App客户端的情况下,如果是直接把重要的账号信息直接放到使用者设备上,是非常危险的。
一、安全隐患起因
- AppID、AppSecret是什么
- AppID:开发者ID是公众号开发识别码,配合开发者密码可调用公众号的接口能力。
- AppSecret:开发者密码是校验公众号开发者身份的密码,具有极高的安全性。
- AppSecret就像门的一把钥匙,如果钥匙丢失或者让其他人获取到,哪是极度不安全的,所以AppSecret的安全性在微信对接的过程中非常重要,避免直接在客户端存储及显示。
主要分享低代码、微服务、容器化、SAAS、系统架构方面的的内容,希望大家点赞,评论,关注。
二、安全方案设计
- 客户端跟后端交互流程
- 流程描述
- App客户端是安装在使用者设备上,所以Android、iPhone安装包中不能包含敏感信息,比如AppID、AppSecret账号信息,安全性需要提高,主要是设计思路是敏感信息保存到服务端,并且存储的时候采用加密后存储,这样即使数据库泄露,敏感信息还是安全的,同时在Java后端服务中处理加密解密过程
- 具体业务使用流程,App客户端需要用到AppID、AppSecret跟微信交互的时候,通过Api跟Java后端服务交互,获取AppID、AppSecret信息,Java后端服务收到App客户端的请求后,从数据库获取加密后的AppID、AppSecret等敏感信息,同时进行解密过程,最后把解密后的敏感信息返回给App客户端,App客户端收到AppID、AppSecret后再结合其它业务数据,形成跟微信交互的数据包,然后通过API跟微信开放服务平台交互,进行业务处理。
- App客户端跟Java后端服务API对接建议采用HTTPS协议
- 主要节点说明
- Android客户端、iPhone客户端:是安装到使用者终端的程序包,只需要实现业务功能就好,不要存放敏感信息
- 是否需要AppID、AppSecret:客户端在进行业务处理时,是否需要AppID、AppSecret等敏感信息,如果需要则需要通过API与Java后端服务对接,如果不需要则自己处理即可
- Java后端服务:负责处理客户端的请求,及从数据库中获取信息,其中涉及到敏感信息时,需要进行对称加密,存储时进行加密处理,返回时进行解密处理
- 后端加密存储:主要是数据库存储系统数据,但敏感信息需要存储加密后的数据
- 其它
- 终端程序跟Java后端服务建议采用HTTPS协议
- 修改或者关闭服务器端所在的服务器常用开放端口
- 数据库修改默认端口号
- 如果有中间件,则修改默认端口及增加认证机制
主要分享低代码、微服务、容器化、SAAS、系统架构方面的的内容,希望大家点赞,评论,关注。
喜欢的朋友欢迎转发、关注~
标签:方案设计,Java,微信,APP,信息,AppSecret,AppID,App,客户端 From: https://blog.51cto.com/sharepointchina/5789506