微信小程序应用安全分析及设计
-
AppSecret
安全分析 ❗ AppSecret在生成后需要后台应用保存维护,存在泄漏风险,AppSecret后台留存安全性需后台应用考虑。❗ Tips: AppSecret的保存需作为后台应用安全设计的考虑项。
-
session_key
通过小程序获取客户敏感信息时需使用会话密钥对数据进行解密,详见 安全分析 session_key获取需后台获取,依赖于AppSecret、小程序wx.login操作 小程序组件获取敏感信息需获取客户明示同意,且获取信息为加密信息,加密信息解密需后台通过session_key解密,session_key获取依赖AppSecret ✊ 敏感信息获取涉及wx.login、加密数据、AppSecret、session_key、客户明示同意,环环相扣。
-
服务器域名
-
版本管理
版本提交可设置提交版本IP白名单,限制访问策略 安全分析 通过该机制防止APPID丢失时恶意修改代码上传
-
开发安全
1、不安全网络HTTPS抓包,交易敏感信息明文传输
HTTPS抓包分析 HTTPS抓包主要通过代理软件欺骗客户端隐藏真实服务端、伪造客户端访问后台服务方式实现HTTPS报文抓取,如BurpSuite Proxy,通过代理模拟服务端证书抓包 在HTTPS抓包下,服务端被伪造,暴露交易明文,故需通过合理的安全设计防范被抓包后的敏感信息泄露,个人考虑可以参考HTTPS握手机制,模拟敏感信息会话密钥交换,保护交易报文敏感信息
-
敏感数据传输设计
2、安全参数保护
针对以上内容,在应用程序中存在一个风险点为应用程序敏感配置泄漏,故需针对敏感配置进行保护 敏感配置包括:AppSecret、RSA私钥 等其他需保护的配置信息 方式1: 对配置文件进行加密保护,防止直接泄漏,但是在使用过程中仍需应用程序解密。 方式2: 采用Vault或类似方案存储敏感参数,仅了解可通过该方式实现,具体实现自行学习。
针对以上设计,已开发程序Demo上传至Gitee
通用WEB安全设计
以上安全设计仅对基础环境、通讯链路、通讯报文进行安全防护,针对WEB应用通用安全设计,需再行扩展。
权限控制:
-
身份标识与数据范围绑定,限制操作数据范围 身份标识不可信任客户端,由服务端维护 操作中鉴定每个身份字段域与当前身份一致
客户端不可信:
-
一切客户端请求源数据不可信任,数据格式不可信任,数据内容不可信任
防重放:
-
对交易进行数据标记,同标记控制交易重放
注入攻击:
-
SQL注入,Mybatis框架#{}参数可以防范 XSS注入:任意客户端上送信息需进行转码存储及展示
Tips: 常见防护原则包括:最小授权、客户端不可信。
推荐读《白帽子讲web安全》
应用安全审计简介
有安全设计,才有安全审计
审计需准确每一笔请求记录操作时间、操作人、行为、操作数据。
总结
各项安全面需紧密结合,才可构造出一个安全的应用环境,比如网络设备再安全,应用层开发一个简单的SQL查询功能,查全库数据,那整个应用环境也是不安全的。
Tips: 作为应用开发人员,安全底线不可失,研究防范,不可研究破坏。上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
微信小程序云函数发天气预报