- 无需代码改动为你的小程序增加攻击防护|操作指南
一、写到前面 上周Donut安全网关推出一键接入的新功能,当你之前有使用过安全网关,再体验这个新能力,就会发现其严格意义上是重塑了整个产品接入形态。 去年我写过一篇关于安全网关的指南文章,其中有讲过安全网关的作用和特点,在这里重新提一下: Donut安全网关提供了一个安全的接入链路,从调用端(小程序、公众号H5、APP、WEB)发起的请求直接进入微信环境接入层,微信接入层通过中转域名将请求转发至后端服务网络的「网关实例」中,在「网关实例」中通过路由配置将请求转发到开发者自己的上游业务服务,完成整个请求。[图片] 上面这个图是去年的时候的网关的架构图,初始形态下我们必须要自己部署一个网关实例,在部署的网关实例中包含对上游业务和路由转发的配置。 在2023年年中时候,又推出了「极简直连模式」。在安全网关看来,针对业务端的网关实例可以由安全网关自己接管,不需要开发者介入安装。直连模式下开发者只需要配置源站域名或IP地址,微信会自己分配相对应的微信接入域名。 比如源站域名https://weixin.qq.com,分配接入域名https://a1a48fdaf-wxa174c2e9b3e2ec50.preview.wxcloudrun.com/。只需要访问接入域名就可以经过安全网关直达源站业务端。[图片] 但接入域名需要配置在前端应用(小程序、WEB、APP)中才可以正常接入。整个架构图中,从调用端到业务后台,每个链路都需要完成改造,安全网关才算正常接入完成。 即使到极简直连模式下,在调用端方面仍然需要开发者进行改造。那么如何才可以让开发者不用对调用端进行改造呢? 这就引出了史诗级新功能:一键接入。 [图片] 二、功能介绍 在微信小程序中,如果要向外发送请求,必须要用 wx.request ,这是微信小程序在网络请求中的封装。 一旦封装就可以做很多事情,比如微信小程序提供的请求缓存管理器,就是在封装下的其中一种功能体现。另外wx.request还会拉取开发者的服务端配置,来判断经过其的请求域名符不符合要求… 那么安全网关的使用中,在wx.request中直接转发需要安全接入的源站域名请求,让它们直接走网关链路就可以了,其余的还是正常走源站链路。 当这个能力实现支持之后,开发者接入安全网关的所有改造工作都已经消失,开发者只需要一系列配置就可以完成小程序端的安全链路改造。 接下来详细介绍一下使用细节。需要注意,之前使用原来形态的安全网关的开发者,需要新建一个空间才会有这个能力。 三、使用过程 1. 需要微信扫码登录 Donut 安全网关控制台,同意安全网关服务协议并同意即完成开通。 [图片] 2. 如果账号没有创建过任何空间,会自动引导开通空间;根据自己的情况选择个人或企业主体,并给空间起一个名字。一般建议一个空间对应一个业务集群。 [图片] 3. 在空间里创建安全网关,如果没有任何网关,则会直接进入一键接入页面 [图片] 在一键接入这里选择小程序,将会拉取此空间下授权的小程序,如果空间里没有任何小程序授权,则可以根据指引新增授权,需要小程序管理员(注意不是开发者和运营者之类的)扫码确认。 [图片] 4. 选择小程序并点击「开始接入」按钮后,将会直接默认转发该小程序所有服务端配置域名,并且只在该小程序体验版生效,不会影响线上。 [图片] [图片] 5. 后续可以在控制台随时更改链路接入覆盖范围,包括小程序的范围和域名范围。 这里主要解释一下接入域名,接入域名其实对应的是一个个的网关域名(在前期安全网关产品功能中有直观体现),在后面的接入多端中会应用到。小程序一键接入可以直接忽略掉。你可以将其理解成一个链路方案,该方案下可以有多个小程序或者一个小程序不同版本的不同域名配置。(比如我希望开发者版A域名走安全链路,体验版B域名走安全链路)[图片] 6. 点击接入域名中的修改按钮,可以针对该接入情况做修改,详情如下图 [图片] 接下来介绍一下每一个配置项作用: 选择小程序:该接入域名所应用到的小程序。接入版本:小程序的哪个版本要安全链路接管。全部版本就是线上版、体验版、开发版均接管。小程序URL:从小程序管理后台开发配置中读取服务端配置,可以选择所有或者针对部分链路做匹配。比如/api/,则匹配/api/前缀下所有的路径,如果下面又有同域名的/test/,则同时匹配/api/前缀和/test/前缀的所有域名请求。如果填空,则匹配所有域名请求。添加小程序:你可以最多添加两个小程序(小程序可以相同)7. 你可以新增接入域名,选择不同的小程序。(需要注意的是一个小程序只能被一个网关的一个接入域名绑定) [图片] 8. 在监控视图中可以查看网关下的小程序端链路调用情况,可以通过观察请求成功率来验证安全链路的兼容稳定与否,结合自己的测试来判断是否应该继续接入。 [图片] 如果你发现一键接入后,有异常请求且持续发生,则可以直接操作一键断联。 [图片] 四、常见情况 1. 一键接入后,是否还需要小程序改造发版? 不需要,微信小程序底层将直接根据你的接入配置在网络层完成安全链路转换。 2. 如何判断是否经过了网关链路? 网关链路的errmsg值为gateway.call:ok, 另外在返回体根级会有callid,建议在小程序端记录并上报该callid,链路出现问题可以凭此callid反馈给安全网关团队精确定位。服务端会收到安全链路的特定header: x-request-id:请求ID, x-wx-call-id:链路请求ID,和前端响应的一致,可以通过其来联系前后端日志。反馈问题也首选这个。 x-wx-route-tag:接入域名标记,可以根据此判断不同的接入域名转发的流量,用来区别对待 x-wx-source:请求客户端,比如微信客户端是wx_client,开发者工具是wx_devtools x-wx-appid:请求小程序,标记请求的小程序appid x-envoy-expected-rq-timeout-ms:网关参数,响应超时时间,一般是15秒 根据自身安全要求,可以通过x-wx-appid、x-wx-route-tag来设立一个白名单,只接受来自白名单接入域名或白名单小程序的请求。 3. 在使用过程中出现问题或者不想再使用安全链路,需要怎么操作? 参照上面使用过程最后一条,直接断联就可以,不需要再次接入则可以直接删除接入域名。(需要注意删除之后,接入域名就没法复原了) 4. 为什么接入配置后,小程序对应的版本访问还是原生链路,没有走安全链路? 链路生效一般在1分钟之内,如果用户正在访问该小程序,则需要等待下一次启动打开才可以。如果开发者测试验证,则建议退出微信后台,重新进入再试,如果仍然不可以,则删除掉小程序然后重新加载尝试(删除掉小程序主要是清除缓存) 5. 为什么接入配置后,微信开发者工具没有走安全链路? 开发者工具对应的是「开发版」,需要保证接入配置到「开发版」上,配置之后仍然不可以则等待一分钟再试。一般清除缓存+重启开发者工具都可以搞定。基础库版本需要在3.1.5及以上,开发者工具版本需要在1.06.2310312及以上。
2023-12-14 - 2023-12-14
- 2023-12-12
- 小程序云开发挑战赛常见问题
由中国软件行业协会、信息技术新工科产学研联盟指导,腾讯云云开发与微信小程序团队等共同发起的全国首届小程序云开发挑战赛正式开启报名。大赛将面向高校开发者和职业开发者分别开设校园赛道和职业赛道,通过赛事实践,促进云原生技术在小程序和微信公众号场景下的实践应用,推进产业和服务的相融合。为方便参赛报名人员更理解本次大赛赛程,特此整理以下小程序云开发挑战赛常见问题以供大家参考。 大赛官网:https://cloud.tencent.com/act/event/cloudbase-acc 赛题相关 请问本次大赛可以做什么方向的题材应用,有什么限制? 本次大赛应用限定为应用解决方案类型,方向不限,可以自由发挥,但作品应当符合互联网合法性,应当遵守现行法律法规。 赛题提到的综合利用云开发各种能力,是必须全部使用嘛? 不必须,根据自己的作品合理使用需要的功能即可,不需要的可以不用使用;作品允许云开发+服务器模式搭建后端服务。在作品评判时,“云开发的合理使用”会作为重要的一个评判标准。 作品相关 有效作品的条件是什么? 1.有完整的应用作品,并且提交材料完整且一致(包含功能演示视频、可访问的代码托管地址、微信开放社区作品介绍文章,且三者描述的是同一个作品) 2.作品不涉及重大抄袭,且主要产出在比赛期间(8月后)完成。【界定在比赛期间完成,将采用举报制和全网检索两个手段进行】 作品评审主要看什么方面?有多少充分利用到云开发?经济价值?新颖? 1.作品从定位【校园赛道30分、职业赛道25分】、技术【校园赛道15分、职业赛道25分】、执行【校园赛道15分、职业赛道20分】、产品体验【校园赛道30分、职业赛道20分】、过程表现【校园赛道10分、职业赛道10分】五个维度综合打分,具体可参看赛事规程 2.云开发的使用包含在技术中统一打分。但若作品不符合赛题规定,则直接取消成绩。 可否采用腾讯云的MongoDB云数据库和腾讯云的云函数 不可以的,但是你可以综合利用云开发+上述产品的方案来做,但不可抛离云开发单独使用其他后端服务。 开源项目文档在哪些方面可以加分? 文档遵从明晰清楚的标准。源码关键部分需注明注释,项目配备启动流程说明。由于源码是专家评委评判的重要依据,所以直观明了的解释说明,评委会更轻松的明晰你的项目,有利于评委给出更加有利的评价。 文档尽可能详尽,如果内容着实很多,可以分多个md文档表述。具体可以翻看开源平台star高赞的项目。 如果做像商城那样数据量多的功能,图片太多导致打包文件太大,保证功能前提下,删点图片(这样可能不能实现海量商品),可以吗? 此情况建议分开文件夹存放,如果基础资源实在太多,可以适当删减。只需要在功能演示视频中展示海量即可。 是否能使用类似uniapp的小程序开发框架,如果能,作品提交源码时是提交框架编译后的小程序原生代码还是部署前框架的代码? 可以使用此类小程序框架,但是不能够使用框架配套的云服务。提交源码时需要提交框架代码,并在文档中说明部署步骤。 不允许拿已有项目进行重复提交,除非基于已有项目进行重大功能迭代。这里怎么定义重大功能迭代? 1.原有传统后端服务在比赛期间改为云开发的,符合提交要求。 2.之前云开发的项目,可进行功能扩展或体系扩张。这里遵循double原则,也即提交作品中有50%及以上需要在比赛期间完成。在文档中需要注明扩展前后的对比,以便专家对比赛期间完成的作品进行合理评价。 参赛如涉及金额支付是以模拟价格展示还是实际场景支付价格(例如购买该产品需支付100元,是只需支付0.01就可以看到后面的流程还是 就以100元计算) 保持原有实际场景即可,此处流程在视频中着重体现。另外评委会从源码中找寻该部分逻辑,进行代码功能走读。 参赛作品最终会以开源项目展示吗? 大赛会对进入复赛的作品,以及评选的优秀作品进行展示。但在展示前会与作品参赛者知会,尊重参赛者的意见,作品参赛者享有作品的著作权。 UI用户体验在评分中占比大吗? 不同的赛道占比不同,但合格的UI会增加体验感,更容易竞争。 微信小程序直播连麦功能个人可以申请吗? 关于小程序或者公众号的一些功能,需要遵循微信平台对主体的开放策略。如果个人明确规定不能使用则无法使用。 大赛不提供任何主体的小程序或公众号,如果有此需求可以自行注册。 参赛作品可以使用框架嘛? 参赛作品以最终呈现为微信小程序/公众号为重要标准,可以使用框架进行构建,不做限制。云开发部分只可以使用小程序·云开发或腾讯云·云开发。 我参赛的作品源码必须要开源嘛? 是的,根据赛事要求,作品需要开源,建议酌情对你的作品基于比赛要求做一些调整,隐藏涉密功能或机密代码。在作品描述时给予标明,并融入相关产品(商业)计划来增强描述。大赛专家组将评估开源部分,如果进入复赛路演,则需要综合评估路演效果与开源部分是否对应。 我可以提交之前已经做好的作品嘛? 参赛作品原则上应在2020年8月以及之后完成。如果参赛作品属于之前产品的升级版本,需要在作品提交相关文档中明确说明大赛期间完成的内容,大赛仅允许该部分内容参加比赛评审。如文档无明确说明,且被鉴定属于之前作品,则取消参赛资格。 我的作品提交后可以迭代更新再提交嘛? 可以,作品提交截止日期为9月20日20:00,在此之前可以随时提交重复提交作品,新的提交会覆盖之前的提交。提交链接需要验证大赛报名手机号才可以进入,如需更改手机号请联系大赛交流群主。 提交链接提示我的手机号没有权限? 一个队伍只有一个人具备提交权限,如果你想更换提交手机号请联系大赛交流群主。如果你是单人组队,则可能在报名时手机号填写有误,也联系群主进行核实。 本次比赛的具体评分标准是什么? 请参考大赛规程第六章节 小程序作品做完后需要上线吗?还是看开发版就可以? 大赛推荐上线的作品,如果你因为资质等其他原因无法上线,可以在提交作品的相关描述中进行详细的功能演示。 在9月10号左右,将会公布评委体验微信号,届时可以配置体验者。 小程序作品做好了可不可以提交审核的同时提交到参赛链接中? 可以,在比赛提交截止前可以随时提审修改。在评判过程中我们以专家组看到的展现功能为准,建议在评判阶段不要做变更,以免评判出现偏差。 代码托管平台有指定平台吗? 大赛没有指定代码托管平台,可以自由选择。 参赛作品提交规范是什么? 请参考大赛规程第六章节,作品提交链接在赛事交流群公告中。 报名相关 我参与的有些晚,已经快结束了,请问还可以提交作品嘛? 可以,在作品提交截止前都可以提交作品,无论何时报名。建议早报名,这样可以用更加充裕的时间来细心打磨作品,会在比赛阶段增添不少的竞争力! 报名我已报了个人参赛,但现在想组队参赛怎么办? 可以直接向大赛交流群主进行私聊,提供有关信息。也可以让队友直接通过微信学院小程序报名,并在队友中填写你的名字和你的报名手机号。 我是以公司title报名的,做的时候可以用个人身份吗? 大赛对title不做限定,如果你用个人身份参加,建议报备给公司决策层,在经过同意后进行,以免带来不必要的麻烦。如果因为此对各方造成名誉或其他损失,均由报名者自行承担。 我是学生,想和职场人士(非学生身份)组队,应该选择哪个赛道? 为了比赛的公平性,大赛不允许学生与非学生之间组队;如果你所使用的技术来自于职场人士的帮助,你可以在比赛时予以说明。 为什么我收到了邮件,但是进不去组织? 这个可能是因为你手机号填写有误,请在邮件里回复官方邮箱CloudBase@tencent.com核实情况。 我的队伍名和队友的不一致、我的名字/性别有误、赛道错误应该怎么办? 联系大赛交流群群主进行核实修改 提交作品时,队伍名称忘记了?在哪里看? 在提交作品时需要填写队伍名称,如果忘记了可以查看自己企业微信的别名,此为队名。但也可以直接填写登录手机号的姓名。这个是辅助验证,大赛组委会会以提交手机号来判定作品提交队伍的。 违规相关 如果我在比赛时,发现其他参赛者有违规现象,我该怎么做? 大赛公示的违规情况有如下几条: 参赛报名信息作弊或造假;在参赛过程中出现违反相关法律、法规、政策规定以及微信相关规则的行为;涉嫌抄袭或侵犯他人知识产权的行为;提交的作品涉及不健康、淫秽、色情或毁谤第三方的内容;其他参赛者认定侵犯比赛公平性的其他违规行为,且组委会裁定真实有效如果你发现以上违规行为,请在大赛企业微信中直接联系大赛组委会成员反映情况。 我对大赛阶段的评选结果有异议,我应该怎么做? 你可直接在大赛企业微信中向大赛组委会成员提出申诉,组织委员会将在收到申诉报告之日起5个工作日内予以受理,并认真审核和处理。
2020-08-31