最近公司想作地图业务,可是考虑到数据的重要性,咱们就须要从各个角度进行评估,如何保证咱们的程序安全;通过长期的调研发现微信小程序是没办法防止别人抓包的,只要连上charles就能随意抓取微信小程序的任意一个接口数据,所以咱们只能对程序代码进行加固,主要的方式以下:html
1. 接口通信层面添加signature,后台获取参数后进行解密比对,若是不一致直接返回报错。前端
2. 接口次数限制,为了防止别人频繁刷后台接口,接口须要对同一用户作次数限制。node
3. 数据加密,为了防止别人轻易获取数据,须要对接口返回值再后台进行对称加密,前端进行解密。git
以上是目前考虑的安全防范,可是因为小程序自己是能够破解的,所以以上的方案就现的不太安全,可是可以起到必定的保护做用。可能不少人对小程序破解感到陌生,认为小程序是微信的,微信的安全确定会很高,不可破解,事实并不是如此。github
因而我针对OFO小程序作一次编译和破解,深刻了解一下状况,看看咱们的加密是否安全,若是解密以后,代码暴露无疑,公钥和算法轻易拿到,说明前端永远都不是安全的。算法
1、下载网易模拟器npm
根据本身的系统选择对应的软件进行安装。微信小程序
安装成功后,以下:缓存
2、再模拟器上面安装对应的软件(微信、RE文件管理器)
1. 打开应用中心,搜索 RE文件管理器和微信,分别进行下载
2. 打开微信,输入账号进行登陆,登陆成功后,点击发现,点击 “小程序”
3. 搜索ofo小黄车
4. 打开ofo小黄车官方版本
此页面可能会打不开,多是模拟器的问题,可是不要紧,小程序文件已经下载到本地了。
3、打开RE文件管理器
1. 进入到目录中:/data/data/com.tencent.mm/MicroMsg
这个下面会存放各类文件,没登陆一个用户会产生一个hash串做为用户标识
如上图所示,我登陆了2个微信账号,产生了2个hash串。
2. 随便选择一个用户进去,确保这个用户点击过ofo小程序。(若是只登陆过一个账号,里面只有一个hash串)
3. 进入到appbrand中,里面包含2个文件夹,一个是pkg(执行文件),一个是jscache(缓存文件)
4. 打开pkg文件夹
里面包含了打开过的小程序执行文件,找到ofo的文件进行;
a. 鼠标单击长按,右边会出现一个选项
b. 选择建立tar文件
c. 接下来,选择不压缩、压缩成功后,选择查看,会进到查看目录,看到刚刚压缩的tar文件
5. 鼠标长按此文件,右边选择发送,经过微信发送给对应的好友,不能直接拷贝到本身电脑上,只能经过微信接收的方式。
4、编译小程序源码
1. 打开终端,用git下载代码
git clone https://github.com/qwerty472123/wxappUnpacker.git
2. 安装依赖,安装以前须要安装Node环境(此处自行安装,不提供安装方式)
cd wxappUnpacker
npm i 或者 cnpm i
//安装依赖文件
3. 运行代码
//window系统: node wuWxapkg.js C:\work\UppackWxApp\app\_362760388_3.wxapkg //Mac系统 node wuWxapkg.js /Users/jacksoft/Desktop/_-1050685970_73.wxapk
运行完成后,便可生成编译以后的源码,以下:
目录结构:
页面结构:
以上即为对OFO小程序的破解步骤,经过编辑器打开看了一下代码,发现可读性仍是很是好的,结构完整,部分变量作了混淆,即便里面存放了公钥和算法均可以找到进行研究,所以前端永远都不是安全的。
咱们能作的,就是先把本身变强大,等到强大之后,才会有人来攻击你,针对一个小企业要考虑的不是安全而是如何快速成长和壮大。
大企业天然有更多的人才来进行安全防御;想作什么功能,大胆的上,不要犹豫,用户体验至上,安全并重;至此此文章献给前端爱好者。
近期刚上线一门基于微信小程序、公众号和小程序云开发的微信受权、分享和支付的专项课程,若是你对支付感兴趣能够考虑入手:
https://coding.imooc.com/class/343.html
React全家桶开发通用的后台管理系统:
https://coding.imooc.com/class/236.html
Vue2.0+Vue-Router+Vuex+Node+Mongo开发全栈商城课程
https://coding.imooc.com/class/113.html
慕课讲师:河畔一角