微信小程序开发文档 第66页

微信小程序 code2Seesion

auth.code2Session 本接口应在服务器端调用,详细说明参见服务端API。 登录凭证校验。通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。更多使用方法详见 小程序登录。 请求地址 GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code 请求参数 属性 类型 默认值 必填 说明 appid string 是 小程序 appId secret string 是 小程序 appSecret js_code string 是 登录时获取的 code grant_type string 是 授权类型,此处只需填写 authorization_code 返回值 Object 返回的 JSON 数据包 属性 类型 说明 openid string 用户唯一标识 session_key string 会话密钥 unionid string 用户在开放平台的唯一标识符,在满足 UnionID 下发条件的情况下会返回。 errcode number 错误码 errmsg string 错误信息 errcode 的合法值 值 说明 最低版本 -1 系统繁忙,此时请开发者稍候再试 0 请求成功 40029 code 无效 45011 频率限制,每个用户每分钟100次

微信小程序 城市服务接入安全检测

safety-specifications 接入微信城市服务,业务方需确保功能安全性。 常见安全检查表 XSS 输入校验:长度限制、值类型是否正确、是否包含特殊字符(如<>’”等) 输出编码:根据输出的位置进行相应的编码,如HTML编码、JavaScript编码、URL编码。 输出到HTML标签之间时,对这些数据进行HTML Entity编码 输出到HTML属性里时,特殊字符编码为&#xHH 输出到SCRIPT里时,对这些数据进行SCRIPT编码,除了阿拉伯数字和字母,对其他所有的字符进行编码,只要该字符的ASCII码小于256。编码后输出的格式为\xHH 输出到Style属性里时,对这些数据进行CSS编码,除了阿拉伯数字和字母,对其他所有的字符进行编码,只要该字符的ASCII码小于256。编码后输出的格式为\HH 输出到HTML URL里时,对这些数据进行URL编码,当需要往HTML页面中的URL里插入不可信数据的时候,需要对其进行URL编码 SQL注入 最佳方式就是使用预编译语句,绑定变量 检查数据类型 使用安全函数,例如php的mysql_real_escape_string 从数据库自身来说,应使用最小权限原则,切记不要使用dba权限 上传漏洞 在客户端和服务器端对用户上传的文件名和文件路径等项目分别进行严格的检查,尤其是服务端检测不能少 服务器端的检查最好使用白名单过滤的方法,比如只允许jpg文件上传等 上传目标路径尽量不在web目录下,如果在web目录下去掉该目录的可执行权限 慎用Fckeditor、ewebeditor等第三方上传组件,历史上曾出现多个漏洞 Struts2 历史上Struts2框架出过多个高危漏洞,这些漏洞足以黑掉一个网站,要尽量使用最新版本 信息泄漏 线上机器删掉测试页面,例如test.html,phpinfo.php等 禁掉详细的错误提示 禁止显示调试信息 禁止将svn相关的文件更新到线上机器,例如.svn/entries 登录安全 登录页面最好加入验证码 尽量使用https协议 会话安全 公众号开发中通常将openid作为用户身份标识,使用openid时要将openid设置到cookie中不要拼接到URL中例如http://www.qq.com/getuser?code=aaaaaa 管理页面 Tomcat、jboss、weblogic等管理页面可以做以下加个方面的安全策略 使用白名单的方式限制可以登录的IP 如果不使用这些管理界面直接删掉 平行权限问题 像订单等场景需要格外注意平行权限问题,例如order?Id=111,是否order?Id=112就可以看到其他的订单。对于这种情况的防御,可以加入校验参数,order?Id=111&sign=hash(字符串常量+id) 支付金额问题 涉及到微支付的web应用一定要严格按照微信支付官方网站的文档设计 确定用户的支付金额与应付金额是否相等

微信小程序 小程序直播·其他能力-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

微信小程序 小程序直播·其他能力

其他能力 1、 直播间小程序码 说明: 小程序引入直播组件后必须进行一次小程序发布上线,否则直播间的小程序码不生效,具体表现是用户扫码进入直播间会显示“页面不存在”。 在 MP 小程序直播后台创建好直播间后,可以直接拿到直播间分享小程序码,无需额外开发 如果商家在后台自己生成的直播间小程序码,需要做以下配置: 在跳转进入直播间的路径加上 type = 9 标识场景入口为小程序码: “plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=[直播房间id]&type=9″。 若需要带上自定义参数则还需要加上 custom_params: “plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=[直播房间id]&type=9&custom_params=encodeURIComponent(JSON.stringify(custom_params))”。 2、 商家公众号文章添加小程序卡片 说明: 商家在公众号文章中添加跳转进入直播间的小程序卡片时,需要做以下配置: 在跳转进入直播间的路径加上 type = 10 标识场景入口为小程序卡片: “plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=[直播房间id]&type=10″。 若需要带上自定义参数则还需要加上 custom_params: “plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=[直播房间id]&type=10&custom_params=encodeURIComponent(JSON.stringify(custom_params))”。 3、 商品详情页注意事项 (1)添加返回按钮: 点击直播组件页面里的货架商品跳转到商家小程序的商品详情页面后,为了避免用户无法再返回直播间,商家需在小程序商品详情页面左上角加上返回按钮,通过wx.navigateBack返回到直播组件页面。 (2)不建议使用wx.switchTab:若在商品详情页点击按钮(如购物车按钮等)通过wx.switchTab跳转到tabbar页,然后再点小窗回到直播间时会出现页面卡死问题(微信客户端7.0.15版本才修复)。此时可把页面改为非tabbar页并通过wx.navigateTo跳转,也可通过关闭小窗来解决该问题。 (3)不建议使用wx.reLaunch:若在商品详情页及之后的页面元素上使用wx.reLaunch跳转,不仅会关闭小窗,而且无法返回到上一页,体验不好。 4、 快速更新直播组件版本的方法 商家小程序对应的管理员微信号收到【公众平台安全助手】下发的直播组件版本更新的服务通知后,可点击通知进行快速发布,移动端即可快速更新小程序内直播组件的新版本,无需修改代码或重新提交审核。 服务通知如下图所示: 5、 直播小窗 版本限制:直播组件版本 1.1.4 及以上支持通过以下参数设置是否关闭小窗。 close_picture_in_picture_mode:默认支持直播小窗,可通过close_picture_in_picture_mode=1关闭小窗功能,如 “plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=直播房间号&close_picture_in_picture_mode=1″。 6、 携带参数 版本限制:直播组件版本 1.1.4 及以上支持携带以下参数,开发者可以根据这些参数建立用户、直播间、商品之间的映射关系。 (1) shareTicket:分享直播间卡片到微信群,点击此卡片后可以在 App onShow 里获取该参数(默认不可获取该参数,可在跳转直播间页面路径上配置 open_share_ticket=1 打开 shareTicket,如 “plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=直播房间号&open_share_ticket=1″,但长按分享卡片时不能转发。) (2) room_id + openid + share_openid + custom_params :点击直播间里的货架商品跳转到商家小程序的商品详情页或点击直播间左上角首页icon跳转到商家小程序的首页时,可以在Page onLoad options里获取房间号、用户openid、分享者share_openid(如果是从分享卡片进入直播间再跳转到商详页才有该参数)、开发者携带的自定义参数custom_params

微信小程序 小程序搜索·商品数据接入(内侧)-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

微信小程序 小程序搜索·商品数据接入(内侧)

商品数据接入(内测) 商品数据应用场景 商品数据目前应用于 微信扫一扫识物功能、小程序商品搜索功能 和 扫条码 三个功能。 这些功能可以很好的满足微信用户对商品的信息获取诉求,同时也能为商家小程序带来曝光流量和建立用户品牌认知的机会。 扫一扫识物- 效果图   小程序商品搜索- 效果图   扫一扫商品条码- 效果图 商品数据接入 目前微信已经爬得部分商品详情页,并对页面的商品信息进行了一定的分析理解。商家小程序可以配合接入商品数据,帮助微信更好地发现更多更丰富的商品信息,提高商品的曝光机会。 成功接入需要完成以下三步: 第一步:开启「爬虫开关」 确保爬虫开关处于开启状态,保证小程序页面内容获得被微信收录的机会。爬虫开关在微信公众平台上设置,可参考如下示意图。 第二步:推送「页面路径」 通过接口主动推送商品详情页的页面路径至微信后台,保证推送页面被微信爬虫及时发现,获得曝光机会。具体参考:小程序search.submitPages接口文档 第三步:接入「数据更新协议」 接入数据更新协议,可支持微信实时的获取到商品的价格、上下架状态等最新信息,避免由于信息不准确而影响商品的曝光效果。 具体参考文档: 小程序商品数据实时更新文档 完成以上三步后,商家小程序的商品详情页将被收录,获得在“扫一扫识物功能”、“小程序商品搜索功能”和“扫条码”的曝光机会。 此外,我们建议商家小程序还可继续标记页面结构化内容和优化页面结构: 一、标记「页面结构化内容」 通过对页面结构化内容的标记,帮助微信爬虫更好的理解页面信息,提高页面的召回排序精准度和曝光转化率。具体参考:页面标记商品结构化数据文档 二、优化页面结构设计 基于小程序搜索优化指南,优化页面结构设计,提高页面对爬虫的友好度。具体参考:小程序SEO建议 如本文档版本过旧,请访问Git查看最新版本:点我

微信小程序 小程序搜索·优化指南

小程序搜索优化指南 爬虫访问小程序内页面时,会携带特定的 user-agent “mpcrawler” 及场景值:1129 判断请求是否来源于官方搜索爬虫的方法: 签名算法与小程序消息推送接口的签名算法一致。 参数在请求的header里设置,分别是: X-WXApp-Crawler-Timestamp X-WXApp-Crawler-Nonce X-WXApp-Crawler-Signature 签名流程如下: 1.将token、X-WXApp-Crawler-Timestamp、X-WXApp-Crawler-Nonce三个参数进行字典序排序 2.将三个参数字符串拼接成一个字符串进行sha1加密 3.开发者获得加密后的字符串可与X-WXApp-Crawler-Signature对比,标识该请求来源于微信 1. 小程序里跳转的页面 (url) 可被直接打开。 小程序页面内的跳转url是我们爬虫发现页面的重要来源,且搜索引擎召回的结果页面 (url) 是必须能直接打开,不依赖上下文状态的。 特别的:建议页面所需的参数都包含在url 2. 页面跳转优先采用navigator组件。 小程序提供了两种页面路由方式:a. navigator 组件b. 路由 API,包括 navigateTo / redirectTo / switchTab / navigateBack / reLaunch 建议使用 navigator 组件,若不得不使用API,可在爬虫访问时屏蔽针对点击设置的时间锁或变量锁。 3. 清晰简洁的页面参数。 结构清晰、简洁、参数有含义的 querystring 对抓取以及后续的分析都有很大帮助,但是将 JSON 数据作为参数的方式是比较糟糕的实现。 4. 必要的时候才请求用户进行授权、登录、绑定手机号等。 建议在必须的时候才要求用户授权(比如阅读文章可以匿名,而发表评论需要留名)。 5. 我们不收录 web-view 中的任何内容。 我们暂时做不到这一点,长期来看,我们可能也做不到。 6. 利用 sitemap 配置引导爬虫抓取,同时屏蔽无搜索价值的路径。 https://www.w3cschool.cn/weixinapp/weixinapp-cspq38rh.html 7. 设置一个清晰的标题和页面缩略图。 页面标题和缩略图对于我们理解页面和提高曝光转化有重要的作用。 通过 wx.setNavigationBarTitle 或 自定义转发内容 onShareAppMessage 对页面的标题和缩略图设置,另外也为 video、audio 组件补齐 poster / poster-for-crawler 属性。 8. 使用页面路径推送能力 可极大丰富微信可以收录的内容,进而提高小程序内容的曝光机会。请参考: https://www.w3cschool.cn/weixinapp/weixinapp-it7838x9.html

微信小程序 运行时性能

运行时性能 setData setData 是小程序开发中使用最频繁的接口,也是最容易引发性能问题的接口。在介绍常见的错误用法前,先简单介绍一下 setData 背后的工作原理。 工作原理 小程序的视图层目前使用 WebView 作为渲染载体,而逻辑层是由独立的 JavascriptCore 作为运行环境。在架构上,WebView 和 JavascriptCore 都是独立的模块,并不具备数据直接共享的通道。当前,视图层和逻辑层的数据传输,实际上通过两边提供的 evaluateJavascript 所实现。即用户传输的数据,需要将其转换为字符串形式传递,同时把转换后的数据内容拼接成一份 JS 脚本,再通过执行 JS 脚本的形式传递到两边独立环境。 而 evaluateJavascript 的执行会受很多方面的影响,数据到达视图层并不是实时的。 常见的 setData 操作错误 1. 频繁的去 setData 在我们分析过的一些案例里,部分小程序会非常频繁(毫秒级)的去setData,其导致了两个后果: Android 下用户在滑动时会感觉到卡顿,操作反馈延迟严重,因为 JS 线程一直在编译执行渲染,未能及时将用户操作事件传递到逻辑层,逻辑层亦无法及时将操作处理结果及时传递到视图层; 渲染有出现延时,由于 WebView 的 JS 线程一直处于忙碌状态,逻辑层到页面层的通信耗时上升,视图层收到的数据消息时距离发出时间已经过去了几百毫秒,渲染的结果并不实时; 2. 每次 setData 都传递大量新数据 由setData的底层实现可知,我们的数据传输实际是一次 evaluateJavascript 脚本过程,当数据量过大时会增加脚本的编译执行时间,占用 WebView JS 线程, 3. 后台态页面进行 setData 当页面进入后台态(用户不可见),不应该继续去进行setData,后台态页面的渲染用户是无法感受的,另外后台态页面去setData也会抢占前台页面的执行。 图片资源 目前图片资源的主要性能问题在于大图片和长列表图片上,这两种情况都有可能导致 iOS 客户端内存占用上升,从而触发系统回收小程序页面。 图片对内存的影响 在 iOS 上,小程序的页面是由多个 WKWebView 组成的,在系统内存紧张时,会回收掉一部分 WKWebView。从过去我们分析的案例来看,大图片和长列表图片的使用会引起 WKWebView 的回收。 图片对页面切换的影响 除了内存问题外,大图片也会造成页面切换的卡顿。我们分析过的案例中,有一部分小程序会在页面中引用大图片,在页面后退切换中会出现掉帧卡顿的情况。 当前我们建议开发者尽量减少使用大图片资源。

微信小程序 启动性能-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

微信小程序 启动性能

启动性能 小程序启动是小程序用户体验中极为重要的一环,启动耗时过长会造成小程序用户流失。 本章节的启动只包括小程序冷启动,不包括小程序后台切前台的热启动。 一、启动流程 在进行启动优化之前,先简单介绍以下小程序的启动过程。在小程序启动过程中,主要包括以下几个方面: 注 1:小程序启动的这些部分不是串行完成的,会尽可能的并行进行。 注 2:小程序启动各部分不是每次启动都完整进行的,会尽可能的利用缓存。 1. 资源准备 1.1 小程序相关信息准备 在用户访问小程序时,微信客户端需要从微信后台获取小程序的配置、版本、权限等相关信息,以对小程序进行必要的版本管理、权限控制和校验等。 对启动耗时的影响 信息的获取和更新会影响小程序的启动耗时,尤其体现在用户首次访问小程序时。 为了在尽量降低影响启动耗时的情况下保证信息的实时性,这些信息会在本地缓存,并通过一定的机制定期进行更新。 1.2 小程序运行环境准备 在执行小程序代码之前,微信客户端需要准备小程序运行的基础环境。 小程序的运行环境包括小程序进程、原生部分的 UI 元素(如 导航栏、tabBar等)、渲染页面使用的 WebView 容器、运行开发者 JS 代码的 JS 引擎、小程序基础库等等。 对启动耗时的影响 运行环境的准备耗时较长,对小程序的启动耗时有明显影响。 为了尽可能的降低运行环境准备对启动耗时的影响,微信客户端会根据用户的使用场景和设备资源的使用情况,提前对运行环境进行部分地预加载。但由于受到设备资源和操作系统调度的影响,目前很难保证每次小程序启动时都有预加载的环境。 1.3 小程序代码包准备 小程序启动时需要从服务器获取代码包地址、下载小程序代码包,并对代码包进行校验。根据小程序页面所在分包和使用的插件不同,一次启动可能需要下载多个代码包或插件包。 当小程序版本发生更新时,微信客户端还需要对代码包进行增量更新。 对启动耗时的影响 下载耗时是启动耗时中的重要瓶颈,与代码包或增量包的体积正相关。微信采用 ZSTD 算法对小程序代码包进行压缩,以尽可能降低下载过程中传输的数据量。 考虑到包大小对用户体验的影响,平台限制单个代码包的大小上限为 2M。代码包上限的增加对于开发者来说,能够实现更丰富的功能,但对于用户来说,也增加了下载流量和本地空间的占用。为了保证启动速度,开发者应该尽可能的控制代码包大小。 2. 开发者代码注入(逻辑层) 小程序启动时需要从代码包内读取小程序的配置和代码,并注入到 JS 引擎中。在主包代码注入过程中,会触发小程序的 App.onLaunch 和首次 App.onShow 生命周期。在开发者代码注入完成后,框架侧会根据用户访问的页面进行一些页面数据初始化工作,触发首页的 Page.onLoad, Page.onShow 事件。 对启动耗时的影响 开发者代码的注入耗时直接影响小程序的启动耗时。在主流的 JS 引擎中,代码注入耗时包括编译和执行等环节,代码量、同步接口调用和一些复杂的计算,都会影响注入耗时。 由于首页渲染需要使用逻辑层发送的数据,如果开发者代码注入耗时过长,也会延迟首页渲染开始的时间。 在部分平台上,微信客户端会使用 V8 引擎的 Code Caching 技术对代码编译结果进行缓存,降低二次注入时的编译耗时。 3. 开发者代码注入(渲染层) 开发者的 wxss 和 wxml 会经过编译注入到渲染层,包含页面渲染需要的页面结构和样式信息。渲染层的注入耗时主要和页面结构复杂度和使用的自定义组件数量有关。 渲染层和逻辑层的开发者代码注入是并行进行的。 对启动耗时的影响 由于首页渲染需要使用渲染层的页面结构和样式信息,如果开发者代码注入耗时过长,会延迟首页渲染开始的时间。 4. 首页(初次)渲染 在开发者代码注入完成后,结合逻辑层得到的数据和渲染层得到的页面结构和样式信息,小程序框架会进行小程序首页的渲染,展示小程序首屏,并触发首页的 Page.onReady 事件。Page.onReady 事件触发标志小程序启动过程完成。 对启动耗时的影响 首页渲染耗时主要受页面结构和参与渲染的数据量影响。 二、关键概念 在讨论小程序启动耗时时,需要明确几个概念: 1. 小程序首屏渲染完成 从开发者角度看,小程序首屏渲染完成的标志是首页 Page.onReady 事件触发。 从框架的角度来说,小程序的首屏的内容是基于小程序的初始数据,以及在渲染开始前到达的 setData 数据渲染的。 首屏渲染完成不表示小程序页面一定有完整内容,开发者触发的 setData(例如通过 wx.request 异步请求数据)不一定能参与到首屏渲染中。 由于框架和启动流程的差异,小程序定义的首屏渲染完成不等同于浏览器的 load 事件。 2. 小程序启动阶段 从用户点击访问小程序到小程序首屏渲染完成(首页 Page.onReady 事件触发)。 3. 打开率/到达率 小程序首屏渲染完成 PV 与 用户点击访问小程序 PV 的比值。流失率 = 1 – 打开率 三、启动性能优化 在启动流程中,小程序代码包准备、开发者代码注入和首页渲染是与开发者相关的,开发者可以进行一定的优化工作。其他部分目前开发者暂时无法干预,框架侧负责进行持续的优化。 1. 小程序代码包优化 代码包优化的核心手段是降低代码包大小,代码包大小直接影响了下载耗时,影响用户启动小程序时的体验。 开发者可以采取以下手段优化代码包大小: 1.1 分包加载 使用 分包加载 是优化小程序启动耗时效果最明显的手段。建议开发者按照功能划分,将小程序的功能按使用频率和场景拆分成分包,实现代码包的按需加载。 分包加载具有以下优势: 承载更多功能:小程序单个代码包的体积上限为 2M,使用分包可以提升小程序代码包总体积上限,承载更多的功能与服务。 降低代码包下载耗时:使用分包后可以显著启动时需要下载的代码包大小,在不影响功能正常使用的前提下明显提升启动耗时。 降低开发者代码注入耗时:小程序启动时会一次性注入全部的开发者代码,使用分包后可以降低注入的代码量,从而降低注入耗时。 降低页面渲染耗时 此外,结合分包加载的几个扩展功能,可以进一步优化启动耗时: 分包预下载 在使用「分包加载」后,虽然能够显著提升小程序的启动速度,但是当用户在使用小程序过程中跳转到分包内页面时,需要等待分包下载完成后才能进入页面,造成页面切换的延迟,影响小程序的使用体验。分包预下载便是为了解决首次进入分包页面时的延迟问题而设计的。 独立分包...

微信小程序 安全指引·后台

后台(包括云函数与自建后台) 注入漏洞 注入漏洞(SQL、 命令等)通常指用户绕过后台代码限制,直接在数据库、 shell 内执行自定义代码。 常见的注入漏洞有: SQL 注入 SQL 注入是指 Web 程序代码中对于用户提交的参数未做有效过滤就直接拼接到 SQL 语句中执行,导致参数中的特殊字符打破了 SQL 语句原有逻辑,黑客可以利用该漏洞执行任意 SQL 语句。 开发建议: 使用数据库提供的参数化查询来进行数据库操作,不允许直接通过拼接字符串的方式来合成 SQL 语句。 如果存在部分情况需要通过拼接的方式来合成 SQL ,拼接的变量必须要经过处理:对于整数,需要判断变量是否为整数类型。对于字符串,需要对单引号、双引号等做转义处理。 避免 Web 应用显示 SQL 的报错信息。 保证 Web 应用里每一数据层的编码统一。 命令注入 命令注入漏洞是指 Web 应用未对用户可控参数进行有效过滤,攻击者可以构造恶意参数拼接到命令上来执行任意命令。 开发建议: 对用户输入的数据(如 ;、|、&等)进行过滤或转义。 弱口令 弱口令指管理后台的用户名密码设置得较为简单或者使用默认帐号。攻击者可以通过登录这些帐号修改后台数据或进行下一步的入侵操作。 开发建议: 后台服务禁用默认帐号,修改后台弱口令。 敏感服务增加二次验证机制,如短信验证码、邮箱验证码等。 文件上传漏洞 文件上传漏洞是指 Web 应用允许用户上传指定文件,但未对文件类型、格式等做合法性校验,导致可以上传非预期格式的文件。 开发建议: 正确解析上传文件的文件类型,通过白名单的方式限制可上传的文件类型。 文件下载 文件下载漏洞是指 Web 应用允许用户通过指定路径和文件名的方式来下载对应的文件,但未正确限制可下载文件所在的目录范围,导致预期范围外的文件被下载泄露。 开发建议: 正确限制可下载文件所在的目录范围 通过指定文件 id 的方式来查找下载对应的文件 目录遍历 目录遍历是指由后台服务对用户输入验证不足或配置不严谨导致的服务器目录内容泄漏。外部可能通过目录遍历获取系统文件、后台代码等敏感文件。 开发建议: web 服务配置 服务端禁止展示目录 设置目录访问权限 在每个目录下放置一个空的 index.html 页面 web 应用代码 严格检查文件路径参数,限定文件的范围 条件竞争 条件竞争比较常见的例子是攻击者通过并发 https 请求而达到多次获奖、多次收获、多次获赠等非正常逻辑所能触发的效果。 漏洞代码示例  // 从DB里查询该用户剩余获奖次数,初始值为1 int remain_times = SelectRemainTimes(); if(remain_times > 0){ EarnRewards(); // 用户获得奖励 ClearRemainTimes(); // 在DB里把该用户的剩余获奖次数清零 } 开发者的设计本意是只允许用户获得一次奖励,但当出现并发请求时,有可能出现请求 A 和请求 B 都刚好执行完第2行代码的情况,此时两个请求的 remain_times 都为1,也就是可以通过第4行代码的判断,获得两次奖励。 开发建议: 对关键(完整)逻辑加锁操作或把关键逻辑以队列任务的形式去进行处理。

微信小程序 安全指引·开发原则与注意事项

安全指引 开发原则与注意事项 本文档整理了部分小程序开发中常见的安全风险和漏洞,用于帮助开发者在开发环节中发现和修复相关漏洞,避免在上线后对业务和数据造成损失。开发者在开发环节中必须基于以下原则: 互不信任原则,不要信任用户提交的数据,包括第三方系统提供的数据,必要的数据校验必须放在后台校验。 最小权限原则,代码、模块等只拥有可以完成任务的最小权限,不赋予不必要的权限。 禁止明文保存用户敏感数据。 小程序代码(不包括云函数代码)跟传统 Web 应用的前端代码类似,可被外部获取及进行反混淆,重要业务逻辑应放在后台代码或云函数中进行。 后台接口调用以及云函数调用,必须进行有效的身份鉴权。

微信小程序 即时配送接口(商家查看)·沙盒测试

即时配送沙盒环境指引 为了方便商家接入自测,我们提供了测试的沙盒环境,商户可以通过下面的流程来模拟下单,修改订单状态,体验服务通知。 接入须知 此环境只能用于测试下单,禁止用于其它用途。 为了防止骚扰用户,openid只能配置为小程序的管理员,运营者或者开发者 下单调用次数有限制,每天不能超时500次 只能使用以下测试信息进行测试测试运力delivery_id=”TEST”测试商户shopid=”test_shop_id”测试商户AppSecret=”test_app_secrect” 测试流程 商户调用微信平台提供的api接口进行预下单,下单,查询订单,取消订单等操作 调用模拟配送公司更新订单接口来改变订单状态,收件人将收到相应的接单,派送,配送完成通知