微信小程序作为一款轻量级的应用,因其有着较强的灵活性,开发成本低,推广裂变快等特点,在很多领域得到广泛的应用。
本文基于小程序在电商领域的应用场景,将常见的安全问题进行分析汇总,整理成安全需求基线,以期不断地完善,然后在更多的业务场景下应用。
01、基础安全
涉及数据敏感,采用私有化部署。
通过负载均衡、内容分发等技术,保障业务高可用。
PS:比较大的图片要进行优化,同时避免出现比较大的图片带有随机参数(jpg?t=xx),一旦引流,所有图片请求回源,将导致带宽跑满现象。
02、重点功能
用户注册授权,添加隐私政策。
文件上传,对上传文件的类型、大小、扩展名等信息进行校验,防止任意文件上传。
用户自定义发布的内容需进行内容审核(例如:文本、图片、视频等),可调用公有云API 检测。
03、业务安全
防越权绕过,对用户权限进行认证。
例如,遍历用户id导致敏感信息泄露,需对用户进行权限验证。
防业务逻辑绕过,防止用户可以直接执行后面的流程,从而绕过某些阶段。
例如:积分兑换的场景,将积分扣减和兑换拆分为两个接口,攻击者可直接执行兑换,不执行积分扣减。
防数据篡改,重要业务数据需后端进行校验。
例如:用户的游戏成绩直接篡改可用于游戏作弊,需增加签名认证,防止数据被篡改。
防条件竞争绕过限制。
例如:在做积分抽奖时,应考虑如何应对高并发攻击。
04、敏感信息保护
OpenID、unionid作为微信用户的唯一身份标示,禁止在业务系统的URL、返回参数等地方使用OpenID、unionid。
禁止在小程序前端代码中,写入明文的AppId和secret、AccessKey及其他敏感配置信息。
敏感数据前端展示,应进行脱敏处理,敏感数据包括但不仅限于姓名、手机号、地址等。
05、身份鉴别
在实现会话管理功能时,应同时满足以下几条要求:
(1)建立唯一的,具有一定复杂度的用户会话标识。
(2)通过OpenID或unionid识别用户身份,并建立账号绑定关系。
(3)应具有超时退出机制,超过一定空闲时间,会话标识失效。
(4)禁止使用不安全的鉴权方式,例如使用手机号鉴权,可能存在信息泄露的风险。
06、其他
正式发布前,要关闭小程序调试模式。
进行渗透测试,针对前端代码和小程序API进行安全检测。
对小程序前端代码进行必要的保护措施,如代码加密、压缩、混淆、反调试等。
声明:本文来自Bypass,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。