预览

使用开发者工具可以预览微信小程序,帮助开发者检查微信小程序在移动客户端上的真实表现。

点击开发者工具顶部操作栏的预览按钮,开发者工具会自动打包当前项目,并上传微信小程序代码至微信的服务器,成功之后会在界面上显示一个二维码。使用当前微信小程序开发者的微信扫码即可看到微信小程序在手机客户端上的真实表现。

微信小程序成员管理

微信小程序成员管理包括对微信小程序项目成员及体验成员的管理。

  • 项目成员:表示参与微信小程序开发、运营的成员,可登录微信小程序管理后台,包括运营者、开发者及数据分析者。管理员可在“成员管理”中添加、删除项目成员,并设置项目成员的角色。
  • 体验成员:表示参与微信小程序内测体验的成员,可使用体验版微信小程序,但不属于项目成员。管理员及项目成员均可添加、删除体验成员。

不同项目成员拥有不同的权限,从而保证微信小程序开发安全有序。

权限 运营者 开发者 数据分析者
开发者权限
体验者权限
登录
数据分析
微信支付
推广
开发管理
开发设置
暂停服务
解除关联公众号
腾讯云管理
微信小程序插件
游戏运营管理

各权限功能说明

  • 开发者权限:可使用微信小程序开发者工具及开发版微信小程序进行开发
  • 体验者权限:可使用体验版微信小程序
  • 登录:可登录微信小程序管理后台,无需管理员确认
  • 数据分析:使用微信小程序统计模块功能查看微信小程序数据
  • 微信支付:使用微信小程序微信支付(虚拟支付)模块
  • 推广:使用微信小程序流量主、广告主模块
  • 开发管理:微信小程序提交审核、发布、回退
  • 开发设置:设置微信小程序服务器域名、消息推送及扫描普通链接二维码打开微信小程序
  • 暂停服务设置:暂停微信小程序线上服务
  • 解除关联公众号:可解绑微信小程序已关联的公众号
  • 微信小程序插件:可进行微信小程序插件开发管理和设置
  • 游戏运营管理:可使用小游戏管理后台的素材管理、游戏圈管理等功能

需要留意,项目管理者控制整个微信小程序的发布、回退、下架等敏感操作,不应把敏感操作的权限分配给不相关人员

JSON 语法

这里说一下微信小程序里JSON配置的一些注意事项。

JSON文件都是被包裹在一个大括号中 {},通过key-value的方式来表达数据。JSON的Key必须包裹在一个双引号中,在实践中,编写 JSON 的时候,忘了给 Key 值加双引号或者是把双引号写成单引号是常见错误。

JSON的值只能是以下几种数据格式,其他任何格式都会触发报错,例如 JavaScript 中的 undefined。

  1. 数字,包含浮点数和整数
  2. 字符串,需要包裹在双引号中
  3. Bool值,true 或者 false
  4. 数组,需要包裹在方括号中 []
  5. 对象,需要包裹在大括号中 {}
  6. Null

还需要注意的是 JSON 文件中无法使用注释,试图添加注释将会引发报错。

业务安全解决方案

为了提高微信开放平台生态的安全性,针对微信小程序各应用场景中可能存在的恶意/蓄意攻击、恶意爬取微信小程序核心数据内容等行为,平台提供了「微信网关」产品,向开发者提供微信网关服务,以协助开发者应对 CC 攻击、DNS 劫持/污染等攻击风险,以及外部抓包获取业务数据信息。同时,微信网关基于微信客户端可靠的网络链路,能进一步提高业务的请求成功率及弱网环境下的访问质量,全力保障服务高可用。

微信网关提供的能力和支持场景

守护数据安全

微信小程序团队基于微信小程序技术架构自研了微信私有协议,基于此微信私有协议,对请求进行二次封装加密,全程无明文数据传输,极大提高了协议破解和数据爬取的门槛,保护了业务协议和数据安全,防止核心数据泄露,保护企业无形的数据资产。

拦截恶意流量

针对可疑的账号/请求,微信网关提供了一套流量风控策略,基于行为、特征、情报等多维度数据智能模型,在面对核心资源请求时,支持多种人机验证方式,高效拦截机器行为;面向业务营销活动时,能精准识别羊毛党/灰产,让业务把优惠福利真正给到目标用户。

提高服务可用性

微信网关与微信客户端共用网络链路,能有效优化三四线城市及商场等弱网环境下的访问质量,只要微信能打得开,业务微信小程序就可以使用,显著提升了客户端访问成功率及终端用户体验。同时,在面向各种网络相关的各种疑难杂症、不明原因报错等情况时,微信网关都能起到有效作用。此外,还提供API流量治理能力,可按接口设置限速,避免流量洪峰导致服务过载雪崩,保障业务高可用。

微信网关特性

便捷接入

无任何架构要求,无需更改现有系统架构,配置简单,一般 0.5人/天 即可完成从接入测试到上线使用。

体验无损

接入微信网关,业务接口性能仅增加毫秒级别的开销,不影响用户体验。

能力使用

登录 Donut 开发平台 – 微信网关控制台,即可立即使用。

开发接入指引

在客户端使用微信网关

微信小程序内容安全解决方案

为了提高微信开放平台生态的安全性,针对微信小程序各内容场景中可能存在的安全问题,平台通过开放API方式向开发者提供内容安全解决方案,协助开发者应对文本、图片、音频内容类型下的敏感内容识别、涉黄内容识别、暴恐内容识别等问题,以便开发者维护微信小程序的运营秩序和安全。

文本内容安全检测:

功能描述:文本审核接口能够识别文本信息中的色情、时政违规、暴恐等违法有害内容,帮助用户及时、精准地防范违规风险,可用于内容审核、敏感信息过滤、舆情监控等场景。

  • 该功能基于10万级大规模敏感词库,结合多种文本对抗方法、政策权威要求等,并运用了深度学习技术,高效识别高危有害内容。同时,我们会根据大规模语料和实时反误杀系统,不断更新迭代,确保效果持续提升。

应用场景:用户个人资料文本内容检测;媒体新闻类用户发表文章、社区评论内容检测;游戏类用户编辑上传的素材(如答题类微信小程序用户上传的问题及答案)检测等。

图片内容安全检测:

功能描述:图片内容安全基于腾讯海量数据资源和深度学习技术,为开发者提供图片内容的智能审核服务,不仅能帮助用户降低色情、时政违规、暴力恐怖等风险,还能大幅度节省人工审核成本,保护业务健康发展。

  • 通过学习和分析图片影像的肤色、姿态和场景等多种维度,可对图片进行色情识别。
  • 提供包括敏感人物的面部识别与敏感事件等的场景识别。
  • 基于舆情分析,提供更为严格的暴恐模型,智能识别暴力、血腥场景及恐怖主义、极端主义等涉嫌违禁的图片内容。

应用场景:用户自定义头像检测、涉及拍照的工具类应用(如P图、自拍类应用)用户拍照上传检测;电商类商品上架图片检测;媒体类用户文章里的图片检测;社交类用户上传的图片检测等。

音频内容安全检测:

功能描述:识别音频中的涉黄、涉政、谩骂等违规内容,从而降低人工成本,提高审核效率。应用场景:游戏聊天频道中的语音检测;直播中的主播语音检测;论坛社区发布相关媒体内容的音频检测。

开发接入指引

  • 文本内容安全接口文档:msgSecCheck
  • 音频/图片内容安全异步接口文档:mediaCheckAsync

常见问题

1、请不要完全依赖内容安全服务

  • 将微信小程序UGC内容接入内容安全服务,可以有效缓解人工审核、降低违规风险,但接入内容安全服务并不意味着可以一劳永逸地解决所有问题。为了进一步确保内容安全,我们仍建议在一些环节设置人工审核确认,以弥补AI算法存在的一些不足。
  • 例如,API判断为REVIEW的内容,说明可能存在风险,需要人工确认;API判断为PASS的内容,可能包含被漏掉的违规内容,可以按照一定比例抽查。

2、如果对内容安全解决方案有使用疑问或者需求,应该如何反馈?

  • 微信开放社区开设了安全风控专区,开发者可以到安全中心专区发帖互动交流。

微信小程序用户安全解决方案

安全风控接口

为了提高微信开放平台生态的安全性,针对微信小程序中可能出现的恶意注册、营销作弊等黑产风险和安全问题,平台开放了API接口,向开发者提供安全风控接口,帮助应对刷单、虚假交易、恶意骗取补贴等营销作弊风险,以及批量注册、伪造身份等注册黑产风险,从而维护微信小程序的运营秩序和安全。

安全风控接口提供的能力和应用场景

  • 营销作弊场景:在首单优惠和特价优惠等营销活动中,有效识别刷单、虚假交易、恶意骗保骗补贴等破坏运营秩序和安全的行为。
  • 恶意注册:识别并拦截机器批量注册、垃圾小号、伪造身份等恶意注册行为。

能力申请流程

  • 登录微信小程序,在【开发→开发管理→安全中心→用户风控→安全风控接口】申请开通即可。 0.png

风险等级说明和使用建议

开发者可以根据接口返回的风险等级数来判断用户的风险程度。风险等级代表的意义及对应业务的使用,可以参考下面的说明和建议,具体的使用可以根据业务实际情况动态调整,以达到准确的拦截效果,保护业务健康有序地开展。

风险等级 建议处置方案
风险等级0 无风险,不做任何阻拦
风险等级1 低微可疑的风险,建议进行简单的验证(如验证码、短信等)
风险等级2 轻度可疑的风险,建议进行简单的验证(如验证码、短信等)
风险等级3 中度可疑的风险,建议根据业务场景采取一定措施避免伤害。例如,营销活动可降低高等级奖励的概率;打榜类活动对此类投票降低权重;登录注册要求二次验证等
风险等级4 高度可疑的风险,建议根据业务逻辑直接拦截。例如,红包类活动返回不中奖或最小额红包;打榜类活动不计算票数;登录/注册操作要求二次验证;高危业务可选择限制本次操作。

开发接入指引

调用API




微信小程序用户隐私保护指引填写说明

为规范开发者的用户个人信息处理行为,保障用户合法权益,微信小程序、插件中涉及处理用户个人信息的开发者,均需补充相应用户隐私保护指引。

具体填写内容说明可见微信小程序用户隐私保护指引内容介绍、插件用户隐私保护说明内容介绍。

一、微信小程序用户隐私保护指引

1、填写现网版本用户隐私保护指引

入口1:账号设置-服务内容声明-用户隐私保护指引-去完善

开发者可随时基于微信小程序现网版本进行隐私协议的完善或更新,审核通过后即可生效。用户可在微信小程序更多资料页和弹窗中查看隐私指引。

2. 填写提审版本用户隐私保护指引

入口2:管理—版本管理—提交代码审核—信息填写页面

开发者每次提交代码审核时,平台默认拉取微信小程序现网版本隐私协议,作为开发版本的隐私协议进入平台审核。若提交审核的开发版本,其隐私接口调用情况与隐私协议内容有出入,或隐私协议内容为空,则在提审时会提醒开发者进行更新。

在此入口对开发版本隐私协议内容的修改不会对现网版本的隐私协议产生影响。同样,入口1的修改仅针对现网版本隐私协议。若开发版本审核通过且发布现网,该版本的隐私协议会同时发布现网覆盖前一个版本的隐私协议。

注意:若提审版本时被拦截,请在当前入口,即入口2对隐私协议内容进行更新。

3. 代开发微信小程序通过接口配置用户隐私保护指引

代开发的微信小程序则只能通过接口配置用户隐私保护指引,可以参考第三方平台的指引文档

二、插件用户隐私保护说明填写

1、填写线上版本用户隐私保护说明

入口1:微信小程序插件—设置—用户隐私保护说明

开发者可随时对插件最新的线上版本进行隐私说明的完善或更新,审核通过后即可生效。用户可在引用了该版本的微信小程序更多资料页、隐私指引中查看。

暂不支持对线上非最新版本进行隐私说明的完善或更新。

2. 填写提审版本用户隐私保护说明

入口2:微信小程序插件—提交审核—无法提交审核弹窗-去完善

开发者每次提交代码审核时,平台默认拉取插件最新的线上版本隐私说明,与当前提交审核版本隐私接口调用情况对比,若当前提交审核版本调用了最新的线上版本隐私说明不包含的隐私接口,会提醒开发者先提交隐私说明审核。

开发者完善隐私声明后,需等待隐私声明审核通过才可提交版本。隐私声明审核通过会通过服务通知告知插件开发者。

注意:若提审版本时被拦截,请在当前入口,即入口2对隐私协议内容进行更新

若当前提交审核版本删除了最新的线上版本隐私说明中包含的隐私接口,无法在提审时进行编辑,建议开发者在版本发布后通过入口1进行修改。

条件竞争

条件竞争比较常见的例子是攻击者通过并发 https 请求而达到多次获奖、多次收获、多次获赠等非正常逻辑所能触发的效果。

  • 漏洞代码示例

    // 从DB里查询该用户剩余获奖次数,初始值为1
    int remain_times = SelectRemainTimes();
    
    if(remain_times > 0){
        EarnRewards();          // 用户获得奖励
        ClearRemainTimes();     // 在DB里把该用户的剩余获奖次数清零
    }
    

    开发者的设计本意是只允许用户获得一次奖励,但当出现并发请求时,有可能出现请求 A 和请求 B 都刚好执行完第2行代码的情况,此时两个请求的 remain_times 都为1,也就是可以通过第4行代码的判断,获得两次奖励。

开发建议:

  • 对关键(完整)逻辑加锁操作或把关键逻辑以队列任务的形式去进行处理。

目录遍历

目录遍历是指由于后台服务对用户输入验证不足或配置不严谨,导致服务器目录内容泄漏。外部攻击者可能通过目录遍历获取系统文件、后台代码等敏感文件。

开发建议:

  1. web 服务配置

    • 服务端禁止展示目录
    • 设置目录访问权限
    • 在每个目录下放置一个空的 index.html 页面
  2. web 应用代码

    • 严格检查文件路径参数,限定文件的范围

文件下载

文件下载漏洞是指 Web 应用允许用户通过指定路径和文件名的方式来下载对应的文件,但未正确限制可下载文件所在的目录范围,导致预期范围外的文件被下载泄露。

开发建议:

  1. 正确限制可下载文件所在的目录范围
  2. 通过指定文件 id 的方式来查找下载对应的文件