本文基于微信开发者平台发布的文章,增加了一些自己的思考。

背景:

小程序的业务接口在开发过程中如果不考虑安全,那么容易有安全漏洞,导致个人信息及隐私泄露风险。

本文主要记录一些业务逻辑类的漏洞,这类漏洞有两个特点:

  1. 不好自动化扫描出来;
  2. 比较常见;

开发原则

建议开发者在应用开发环节中始终基于以下原则:

  • 互不信任原则: 不要信任用户提交的数据,包括第三方系统提供的数据,必要的数据必须放在后台校验。
  • 最小权限原则: 代码、模块等只拥有可以完成任务的最小权限,不赋予不必要的权限。
  • 禁止明文保存用户敏感数据: 需进行安全的加密,避免拖库。
  • 接口鉴权: 除登录接口之外,应对所有非公开接口进行鉴权,并记录详细日志用于追溯。
  • 小程序代码(不包括云函数代码)跟传统 Web 应用的前端代码类似,可被外部获取及进行反混淆,重要业务逻辑应放在后台代码或云函数中进行。
  • 后台接口调用以及云函数调用,必须进行有效的身份鉴权。

漏洞类型——越权

这种漏洞暂时没有办法自动检测,属于业务逻辑漏洞,比较费人。



3. 未授权

部分小程序因业务属于公开信息,所以未设置登录授权检查。导致该接口会被黑灰产利用,进行信息倒卖、信息监控等恶意行为。

用户可以不通过登录直接通过订单 ID、手机号、车牌等信息访问详细信息。

漏洞类型——信息泄露

这种漏洞暂时没有办法自动检测,属于业务逻辑漏洞,比较费人。

漏洞类型——爬虫遍历

这种漏洞暂时没有办法自动检测,属于业务逻辑漏洞,比较费人。

漏洞类型——授权用户信息变更不跟进

这种属于设计上漏洞,可能从开始就没设计好,用户注销、用户更新后,用户的资料后续要怎么处理。

风险识别

开发者通过微信小程序 API,经过用户明确同意获取了用户资料,当遇到用户资料过期、用户主动撤销、用户注销账号等情况时,开发者需对先前获取的用户资料及时清理,依规及时履行相应个人信息保护义务,保护用户权益。

处理建议

开发者需要设置「消息推送服务器配置」,及时接收微信平台关于授权信息的通知并处理;

https://developers.weixin.qq.com/miniprogram/security/basic/listen.html

漏洞类型——注入类

注入类漏洞现在都可以自动检测了,主要看看他建议的修复方式就好。

SQL注入

处理建议

  • 使用数据库提供的参数化查询来进行数据库操作,不允许直接通过拼接字符串的方式来合成 SQL 语句。

  • 如果存在部分情况需要通过拼接的方式来合成 SQL ,拼接的变量必须要经过处理:「对于整数,需要判断变量是否为整数类型;对于字符串,需要对单引号、双引号等做转义处理」

  • 避免 Web 应用显示 SQL 的报错信息。

  • 保证 Web 应用里每一数据层的编码统一。

命令注入

处理建议

  • 对用户输入的数据(如 ;、|、&等)进行过滤或转义。

  • 不要信任前端(WEB、小程序)发送请求的任何内容,所有参数都进行类型验证,避免直接使用前端传递的命令去执行。

漏洞类型——上传、下载类

这样类漏洞现在也可以自动检测了,主要看看他建议的修复方式就好。

处理建议

  • 正确解析上传文件的文件类型,通过白名单的方式限制可上传的文件类型;
  • 后台检查文件二进制头;
  • 上传文件应该和后台运行程序服务器隔离;
  • 上传文件目录不允许有可写、可执行权限;



处理建议

  • 正确限制可下载文件所在的目录范围;

  • 通过指定文件 id 的方式来查找下载对应的文件;

Reference

@开发者,这些漏洞你一定要看!

https://mp.weixin.qq.com/s/BSphYEjQb1PCHKW4qTGWXg

小程序安全指引



https://developers.weixin.qq.com/miniprogram/security/basic/risk.html

微信小程序安全开发、测试的一些记录的更多相关文章

  1. 技本功丨收藏!斜杠青年与你共探微信小程序云开发(下篇)

    2019年2月26日,人们为了一个杯子疯了一天. 星巴克猫爪杯,一场已经与猫无关了的“圣杯战争“.网上的倒卖价格,已炒至近千元! 求而不得,舍而不能,得而不惜.这是人最大的悲哀... 所以,请珍惜以下 ...

  2. 微信小程序快速开发

    微信小程序快速开发 一.注册小程序账号,下载IDE 1.官网注册https://mp.weixin.qq.com/,并下载IDE. 2.官方文档一向都是最好的学习资料. 注意:1)注册账号之后会有一个 ...

  3. 微信小程序从零开始开发步骤(六)4种页面跳转的方法

    用法:用于页面跳转,相当于html里面的<a></a>标签. API教程:https://mp.weixin.qq.com/debug/wxadoc/dev/component ...

  4. 微信小程序从零开始开发步骤(三)底部导航栏

    上一章节,我们分享了如何创建一个新的页面和设置页面的标题,这一章我们来聊聊底部导航栏是如何实现的.即点击底部的导航,会实现不同对应页面之间的切换. 我们先来看个我们要实现的底部导航栏的效果图:(三个导 ...

  5. 微信小程序从零开始开发步骤(二)创建小程序页面

    上一章注册完小程序,添加新建的项目,大致的准备开发已经完成,本章要分享的是 要创建一个简单的页面了,创建小程序页面的具体几个步骤: 1. 在pages 中添加一个目录 选中page,右击鼠标,从硬盘打 ...

  6. 微信小程序从零开始开发步骤(三)

    上一章节,我们分享了如何创建一个新的页面和设置页面的标题,这一章我们来聊聊底部导航栏是如何实现的.即点击底部的导航,会实现不同对应页面之间的切换. 我们先来看个我们要实现的底部导航栏的效果图:(三个导 ...

  7. 微信小程序从零开始开发步骤(二)

    上一章注册完小程序,添加新建的项目,大致的准备开发已经完成,本章要分享的是要创建一个简单的页面了,创建小程序页面的具体几个步骤: 1. 在pages 中添加一个目录 选中page,右击鼠标,从硬盘打开 ...

  8. BeautyWe.js 一套专注于微信小程序的开发范式

    摘要: 小程序框架... 作者:JerryC 原文:BeautyWe.js 一套专注于微信小程序的开发范式 Fundebug经授权转载,版权归原作者所有. 官网:beautywejs.com Repo ...

  9. 微信小程序云开发不完全指北

    微信小程序云开发不完全指北 首先必须说明云开发的"云"并不是类似云玩家里的云的意思,而是微信小程序真的提供了云开发的接口以及一个简单的提供存储.数据库服务的虚拟后台(对于一些轻量小 ...

  10. 微信小程序项目开发实战:用WePY、mpvue、Taro打造高效的小程序》(笔记4)支持React.js语法的Taro框架

    Taro本身实现的情况类似于mpvue,mpvue的未来展望中也包含了支付宝小程序,现在的版本中,也可以使用不同的构建命令来构建出百度小程序的支持,如第10章所示,但是现在Taro先于mpvue实现了 ...

随机推荐

  1. 干货分享:Air700ECQ的硬件设计,第三部分

    ​ 5. 电器特性,可靠性,射频特性 5.1. 绝对最大值 下表所示是模块数字.模拟管脚的电源供电电压电流最大耐受值. 表格 17:绝对最大值 参数 最小 最大 单位 VBAT -0.3 4.7 V ...

  2. 解决MindSpore-2.4-GPU版本的安装问题

    问题背景 虽说在MindSpore-2.3之后的版本中不在正式的发行版中支持GPU硬件后端,但其实在开发分支版本中对GPU后端是有支持的: 但是在安装的过程中可能会遇到一些问题或者报错,这里复现一下我 ...

  3. HarmonyOS-Chat聊天室|纯血鸿蒙Next5 api12聊天app|ArkUI仿微信

    自研原生鸿蒙NEXT5.0 API12 ArkTS仿微信app聊天模板HarmonyOSChat. harmony-wechat原创重磅实战纯血鸿蒙OS ArkUI+ArkTs仿微信App聊天实例.包 ...

  4. redis的另一个分支 keydb

    今天无意间发现了redis还有一个分支keydb https://keydb.dev 是多线程的,貌似在机器内核多的情况下效果比redis效果好 访问 https://docs.keydb.dev/d ...

  5. js+jquery实现贪吃蛇经典小游戏

    项目只使用到了html,css,js,jquery技术点,没有使用游戏框架,下载本地直接双击index.html 运行即可体验游戏效果. 项目展示 进入游戏 游戏开始 游戏暂停 html文件 < ...

  6. Nuxt.js 应用中的 error 事件钩子

    title: Nuxt.js 应用中的 error 事件钩子 date: 2024/12/3 updated: 2024/12/3 author: cmdragon excerpt: 在任何 Web ...

  7. React使用useRef调用子组件方法

    前情 公司前端主技术栈是react系,最近在提取组件的时候想到vue可以通过ref获取子组件,再调用子组件的方法,于是想在react中实现同样效果. 实现原理 父组件调用useRef获取ref对象,再 ...

  8. 如何为在线客服系统的 Web Api 后台主程序添加 Bootstrap 启动页面

    背景 我在业余时间开发了一款自己的独立产品:升讯威在线客服与营销系统.这个系统的核心后台主程序,在最早期是完全没有页面,经常有朋友部署之后,一访问是 404,以为没有部署成功.我一看这肯定不行啊,可后 ...

  9. R数据分析:临床研究样本量计算、结果解读与实操

    很久之前给大家写过一篇文章详细介绍了样本量计算的底层逻辑,不过那篇文章原理是依照卡方比较来写的,可以拓展到均值比较,但视角还是比较小,今天从整个临床研究的角度结合具体的例子谈谈大家遇到的样本量的计算方 ...

  10. AT_kupc2019_g ABCのG問題题解

    这题的难度不怎么好说,不过我认为还是挺简单的. 我们可以把答案看成由多个子图构成的图,这样我们只需要手打一个小子图,从中推出完整的答案. - 把小于子图范围的地方填上子图的字母 - 如果这个点的横坐标 ...