个人案例
- 汽小宝
汽修门店经营及管理系统 SaaS
汽小宝扫码体验
- 小程序的防盗思考
之前写了一篇《用webpack编译小程序》的文章,有人留言问到关于小程序防盗,加密,混淆等等问题,我想了一下午,发现这个真的是一个问题(呵呵),这篇文章来分享下我的思考 https://juejin.im/post/5b0e431f51882515497d979f 上文是一篇关于小程序反编译的介绍,作者通过一顿猛如虎的操作,成功的扒下了一个小程序的源码(好像是滴滴)。文末作者提到了一点安全相关的问题,为增加了反编译者的阅读难度可以通过babel来压缩混淆js文件。 我想通过各种框架(wepy, mpvue等)来编写的小程序,框架应该都经过了babel来处理输出,反编译者拿到的应该都是uglifyjs后的文件,之所以仍然有这些问题,应该还是有相当一部分的同学使用的原生小程序语法来进行的开发的吧! 盗版 如果我是一个盗版者,我这么做的目的当然是为了增加我的收益,毕竟成本小,我会找很多比较热门,流量高的项目,扒下来,加上我的广告(嘿嘿),我不太在乎小程序的质量,只要它能正常运行。 镜像盗版 镜像盗版是成本最小的一种方式,扒一个小程序,clone成n个项目,上线,收钱。镜像盗版不理会源代码是否混淆或者加密,不需要弄懂逻辑,仅仅需要小程序能正常运行,即便不完整。 数据盗版 这一类是比较有追求的盗版,因为搭建一套数据服务成本较高,因此扒一个小程序,将api抽离出来,自己开发界面,避开被人投诉,神不知鬼不觉的利用别人的数据服务(想到这,有点激动)。 数据保护 不论那种盗版,最终都需要将数据呈现给用户,因此如何保护数据是防盗的一个关键点。 关键字防盗方案 PC/H5我们有一种经济的操作方法,将关键字秘钥(如公钥,keyword)非周期性通过后端php/node/java等服务渲染输出(明文),浏览器端则通过算法生成token来解开相关数据或接口。注意非周期性这个描述(周期性输出也可以,但破解成本变小了)。 小程序并不能如上操作,但小程序可以通过非周期性更新版本,来输出不同的关键字秘钥(如写死在app.globalData中),这必然增加了盗版者的破解成本,当正版更新秘钥后,盗版小程序不更新将不能正常获得数据,也就断了盗版的根 云函数方案 这个是我重点想介绍的。云端小程序面向的是没钱,没资源又想搞点啥挣点外快的开发者,正规小程序当然都必须有自己的后端数据服务,但并不妨碍使用云端服务来提供支持。 云端很安全,这是我的推论,我也深信这是正确的。之所以安全,我想应该是微信app一定封装了一些和腾讯云间通信的某种不可告人的秘密吧。试想一下,如果不同小程序之间的云服务被串了,我的小程序用你的云资源,这。。这。。这,估计腾讯自己都会玩不下去了。 基于云端很安全的前提,我们可以把关键的秘钥数据存放在云端,每一次小程序初始化时去云端将关键秘钥取下来生成接口访问token,这样即便盗版者扒到了小程序,但云服务的隔离性使得盗版者不能获取关键秘钥,从而盗版者成功的扒到了一套UI 云服务的缺点是每天有访问次数上限,我记得是50万次/天,这完全不够啊~~ , 嗯,老铁,666,双击点赞 结束 以上种种,本人并没有实践过,仅限于分享,我们现在主要做开源,盗版,不存在的啊~~~ 如果你想了解下我们的架构,可以看这里 https://github.com/webkixi/aotoo-hub 如果你想使用我们的架构, 不怕死的看这里 https://www.agzgz.com 如果你还想看看我们的小程序,骚一骚下面这个 [图片]
2019-06-06 - 反编译的小程序服务端接口都不改,为什么能上线,一直占用我的服务器资源?
以下小程序:拍照翻译、英语翻译在线翻译、翻译器拍照翻译软件、扫描翻译君、扫描翻译、英译中拍照、英译汉翻译器,反编译的,翻译后的朗读接口都不改就上线,现在我把朗读接口返回的数据朗读成:“你使用的小程序非法反编译的,反编译后发音连接都不改,请点击右上角三个点按钮,在弹出对话框点击投诉进行举报”,只要输入任何文字翻译后,点击朗读图标,都会朗读这句让用户举报他,为什么这些小程序都能上线,这些小程序一直访问我服务器接口,另服务器负载很高,我投诉了也一直在。 [图片]
2019-10-22 - request中的header,竟然有两个cookie!有一个是小程序自己加的
给request中的header设置了cookie时,设置好的header和实际发送的header不一致: 在Console里打出了请求参数,得到的header里面只有一个Cookie,图片如下: [图片] 通过抓包工具fiddle,抓到的请求头为,里面竟然有两个cookie,第一个小写开头cookie是我自己在代码里面set进去的,第二个大写开头的Cookie,不知道从哪里来的,是小程序自己设置进去的?,抓包图如下: [图片] 结果:在华为手机上,能稳定重现,服务端后台去获取cookie的时候,服务端使用的是Yii框架,直接在入口打印了yii自带的request请求的原生的$_COOKIE,得到的竟然是第二个Cookie,即acw_tc=AQAAAIaoAjpdjwEAyqqvO+/suc1TdGe7,但是我在客户端设置的cookie并不是这个,以至于我验证cookie失败
2018-06-14 - 严重疏漏:request 返回的 header 是个结构体???
在 HTTP 协议中,返回的 header 的字段是有可能重复的,最常见的就是 Set-Cookie 服务端返回 header 如图: [图片] 如今 request 里的 success 给的 header 是个 Set,值只有第一个 Set-Cookie: [图片] 面对 Request 里的 Cookie 问题,官方也没有提供解决方案, JS 写解析 header 还挺吃力, 加上现在这个没法返回完整的 header 表示...无力吐糟... 不知道官方是故意让我们解藕 Cookie,用不同的两套逻辑,还是疏漏???
2017-09-18 - 怎么获取HTTP Response Header里的set-cookie?
怎么获取HTTP Response Header里的set-cookie?
2017-11-02 - wx.request返回的http头的格式问题
在调用wx.request后,得到的 res.header['Set-Cookie'] 是类似如下的格式: ****=****:max-age=31536000; expires=Tue, 06-Aug-19 09:29:39 GMT; domain=****; path=/,****=****,****=****; path=/,****=****; path=/; domain=****; expires=Thu, 01 Jan 1970 00:00:00 GMT,****=****; max-age=3600; domain=****; path=/ 但原本应是以下格式: Set-Cookie: ****=****:max-age=31536000; expires=Tue, 06-Aug-19 09:29:39 GMT; domain=****; path=/ Set-Cookie: ****=**** Set-Cookie: ****=****; path=/ Set-Cookie: ****=****; path=/; domain=****; expires=Thu, 01 Jan 1970 00:00:00 GMT Set-Cookie: ****=****; max-age=3600; domain=****; path=/ 也就是说,在响应头中有多个Set-Cookie时,微信返回的Set-Cookie是把所有的值以逗号相连后返回的。 这样就带来了一个很棘手的问题,也就是说,当Set-Cookie中含有逗号时(在expires中就必然有一个逗号),再用逗号连接多个Set-Cookie值时就会产生分割困难的问题。对于这样的问题,是否有一个比较好的解决方法。官方是否可以改进下,不要再以逗号分隔,而是以数组形式返回,以防止出现类似的分割困难。
2018-08-06 - wx.request如何在header传多个cookie?
开始获取的Set-Cookie 的数据直接存储起来加到header的cookie了,可是如果有多个cookie的时候后端只获取到了第一个,怎么上传多个cookie并且后端可以都获取到
2019-11-01 - 在使用wx.request时,真机无法获取cookies,导致无法记录登录状态,请问是什么问题?
如标题所述。这个功能上周的时候还没有问题,今天早上发现的这个问题。在开发工具中调试时也正常,用手机运行时就不行了。 代码片段:https://developers.weixin.qq.com/s/3rUmnCmV7lcG 通过断点,我发现在开发工具中,可以使用res.cookies获取到cookies,但在手机上运行,则获取不到。 [图片][图片] 组件名称:wx.request 基础库版本:2.9.1 微信版本:7.0.8 测试手机:三星Note10 Plus,小米8,华为P20Pro。效果都一样
2019-11-04 - 爬虫吗?
我们的小程序有很多无效请求,但是这些请求都带有我们小程序登陆令牌,通过了前置验证,但是有其他的错误信息,每天不定时短时间内发生大量类似请求,都没有 mpcrawler 值,帮确认一下吧。看着像爬虫或者是机器执行的。 请求信息: "HTTP_USER_AGENT":"Mozilla/5.0 (iPhone; CPU iPhone OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.5(0x17000428) NetType/4G Language/zh_CN" "REMOTE_ADDR":"101.91.60.106"
2019-11-07 - 完美解决小程序session问题
小程序不像web浏览器有cookie机制,在默认使用cookie存sessionid的机制下,后台将无法正常使用session功能,如果正确使用session呢,提供两个方案。 [代码]1、将sessionid通过url进行传递 用户每次登录成功后将生成的sessionid值使用参数回传到客户端, 客户端接到sessionid后保存到本地, 在发起网络请求的底层接口中默认自动带上sessionid=本地存储的sessionid值。 需要配合服务器一起更改,服务器后端默认使用cookie机制 2、无缝对接cookie, 将服务器的set-cookie值保存到本地,再请求的时候模拟浏览器头部信息并带上保存的cookie信息 1)保存cookie值: _XHR('login',{'code':res.code}).then(function( ret ){ ret.header["Set-Cookie"] != undefined && wx.setStorageSync("cookie", ret.header["Set-Cookie"]); }); 2)请求的时候自动带上cookie信息 var header={}; header = { 'content-type': 'application/x-www-form-urlencoded' }; var cookie = wx.getStorageSync("cookie"); if( url != 'login' && !isNull( cookie ) ){ header['cookie'] = cookie; } 将header 赋值到 request的header内 wx.request({ url: qryDomian + url + '.html', data: _data, method: 'POST', header: header, dataType:'json' ...... 第二种方案服务器无需做任务操作。[代码]
2019-05-20 - 小程序侵权投诉的发起与应对
小程序是否受法律保护? 著作权法对小程序的保护,不仅体现在通过《软件著作权作品登记证书》对代码著作权的保护,也体现在小程序整体符合作品“独创性”标准的保护。对于小程序的细化内容,昵称的商标权利或名称权利、logo图片和素材的版权权利等,都是法律保护的范畴。 微信小程序平台规则 小程序的帐号不得使用、发布、传送、传播侵犯他人注册著作权(版权)的信息或内容。 详细规则请见:《腾讯微信软件许可及服务协议》8.1.2.2条,《微信公众平台运营规范》4.1.2和4.1.3条及《微信小程序平台运营规范》5.6条。 侵权情况示例 微信小程序头像使用他人美术作品、漫画形象、未注册为商标的但具独创性的品牌标识; [图片] 小程序界面设计、交互、功能与他人的手机应用软件或在先发布的小程序构成实质性相似,构成小程序抄袭; [图片] 微信小程序代码抄袭,侵犯他人软件著作权; [图片] 微信小程序销售、展示、传播盗版的电影、书籍、授课视频等; [图片] [图片] 侵权情况处罚 一经发现将对侵权内容予以清除、断链,并根据侵权行为严重程度对帐号予以功能限制或封禁、甚至注销帐号等形式的处理,并有权拒绝再向该帐号主体提供服务。 小程序被侵权时,可以怎么做? 微信非常重视保护开发者的创新和权益,你的小程序被侵权,我们提供以下常用的投诉途径: 电脑登录微信小程序后,点击底部的“侵权投诉”,或直接进入侵权投诉链接 我们建议咨询或委托法律专业人士投诉。 发起侵权投诉是一项正式的、严肃的、具有法律意义的行为,涉及大量中国大陆法律专业知识。若侵权投诉不符合法定条件,平台将无法处理。所以,我们相信,就侵权投诉事宜向法律专业人士进行咨询,或交由法律专业人士处理,会有利于侵权投诉事宜更顺畅地进行。 如何在开发和运营小程序的过程中避免侵犯他人的知识产权? 为确保你发布的内容不侵犯他人著作权,我们建议你发布的内容限于你自己原创的作品。 如果你取得权利方的许可或转让,你可以使发布、使用他人的作品。 小程序的侵权和违规,有什么区别,该怎么区分投诉? 可以从以下2个场景进行区分: 场景1. 有人仿冒我的小程序名字、头像,蹭我的热点,怎么办? 投诉方法:在微信公众平台电脑端页面,选择“侵权投诉”-“昵称侵权”/ ”头像侵权” /”功能介绍侵权” /”冒充他人”-填写材料提交举报。(点这里查看详情) [图片] [图片] 场景2. 如何投诉小程序其他违规行为? 投诉方法:在手机端,点击小程序右上角“…”-“关于小程序”-“投诉与反馈”,选择具体投诉内容进行相关投诉。 [图片] 我的小程序被投诉侵权,该怎么办? 小程序被投诉侵权后,将会牵涉到你和你的小程序的合法权益问题,你应该十分重视。你需要及时仔细阅读投诉人提交的投诉材料,包括投诉通知书、证据、理由、权利证明材料等。对投诉通知所指出的涉嫌侵权的内容,自己先进行回顾评估,自行下架侵权风险高的内容。 我的小程序被投诉侵权,是否一定会被下架? 对于针对昵称、头像和功能简介的投诉,和服务号、订阅号的类似,平台评估构成侵权的,会对相应的元素进行处理。处理后,被投诉方如果有相反的证明材料,可以通过申诉渠道提交,平台会对申诉也进行审核评估,决定是否恢复。这里一般不涉及下架的风险。 针对小程序内的内容侵权投诉,需要重点说明一下。因为内容基本上都是开发者布置在自己架设的服务器上。因此,在判断构成侵权的情况下,平台只能通过下架整个小程序来达到断开侵权内容链接的效果。 一般情况下,我们为了保持小程序服务的连续性,对于不属于严重违法违规、不属于多次批量或恶意对抗的小程序违规行为,平台都会先下发违规整改处理提示。和小程序内容侵权一样,我们建议开发者认真对待这些提示,对违规部分进行完整的整改。这样才能更好地避免小程序被下架处理。
2020-01-14 - 新富文本组件
mp-html小程序富文本组件 news欢迎加入 QQ 交流群:699734691示例小程序添加获取组件包功能[图片] 功能介绍 支持在多个平台使用 支持丰富的标签(包括 table、video、svg 等) 支持丰富的事件效果(自动预览图片、链接处理等) 支持锚点跳转、长按复制等丰富功能 支持大部分 html 实体 丰富的插件(关键词搜索、内容编辑等) 效率高、容错性强且轻量化使用方法1. npm 方式 在项目根目录下执行 npm install mp-html 开发者工具中勾选 使用 npm 模块 并点击 工具 - 构建 npm 在需要使用页面的 json 文件中添加 { "usingComponents": { "mp-html": "mp-html" } } 在需要使用页面的 wxml 文件中添加 <mp-html content="{{html}}" /> 在需要使用页面的 js 文件中添加 Page({ onLoad() { this.setData({ html: 'Hello World!' }) } }) 2. 源码方式 将源码中的代码包(dist/mp-weixin)拷贝到 components 目录下,更名为 mp-html 在需要使用页面的 json 文件中添加 { "usingComponents": { "mp-html": "/components/mp-html/index" } } 后续步骤同上 获取github 链接:https://github.com/jin-yufeng/mp-html npm 链接:https://www.npmjs.com/package/mp-html 文档链接:https://jin-yufeng.gitee.io/mp-html
2022-03-04 - 微信小程序form表单中有多个submit 按钮,怎样区分
<button class="weui-btn mini-btn" type="primary" form-type='submit'> 登录1 </button> <button class="weui-btn mini-btn" type="primary" form-type='submit'> 登录2 </button>
2018-07-23