微信小程序API防攻击策略
微信小程序是当前企业的主流应用之一。与APP应用相比,它具有轻量、快捷、方便等诸多优点。无需用户安装,微信打开即可使用。整个架构示意图如下:
微信小程序应用在微信公众平台下发布和使用,调用企业API服务需要通过外网访问。这就带来了很多API服务的安全问题。黄牛可以利用这种非法的API服务调用,破坏企业的商业生态,获取小程序相关的商业信息,给企业造成经济损失。如何防止恶意攻击并构建健壮的企业应用程序。已经成为每个小程序开发者和设计者的思考点。
为了成功获取资源信息并防止被屏蔽,黄牛黑客在攻击过程中会具有以下特征:
对访问流量请求进行保护,涵盖常见的防护策略:Bot防护、CC安全防护等。此外,您还可以制定自己的防护策略。
为了防止小程序源码被爬虫获取,发布小程序时需要对源码进行混淆。这样得到的源代码无法正常解释。
微信小程序支付API
2019年12月26日
文档:
1、一般需要开发的两个接口
1.统一下单
2.申请退款
3.签名规则
2.小程序支付时序图
关键是wx.requestPayment(object)
2、ps商户系统与微信支付系统的主要交互有:
1、调用小程序中的登录接口,获取用户的openid。接口请参考公共api【小程序登录接口】
2、商户服务器调用支付统一下单。API请参考公共API【统一订单API】
3、商户服务器再次调用签名。API请参考公共API【再次签名】。
4、商户服务器收到支付通知。API请参考公共API【支付结果通知API】
5、商户服务器查询支付结果。API请参考公共API【查询订单API】
3、微信小程序支付实现步骤
1.获取登录凭证代码并传递给后端服务器
2、后端服务器请求微信服务器获取openid和session_key,并将openid返回给小程序
3、小程序客户端向后端服务器发起支付请求(带openid参数)
4、后端服务器收到openId后,调用微信支付统一下单接口(后端调用获取小程序的支付参数)
5、拿到后端服务器返回的5个参数后,调用最终支付接口wx.requestPayment
6、微信服务器成功完成支付后,通知后台服务器。
小程序中封装api请求
1.创建与页面同级的请求文件夹。该文件夹下创建index.js文件夹,将封装的api写入该文件夹中。
constrequest=(method,url,params)={//method(请求方法)url(请求路径)params(请求参数)
returnnewPromise((resolve,reject)={//创建promise函数
letbaseUrl='公共网址'
uni.showLoading({//添加加载动画
title:'正在加载'
});
uni.request({//发送请求
url:baseUrl+url,//url参数为传入地址
data:params?params:'',//传入请求参数
method:method,//传入请求方法
success:res={//成功函数
解析(res.data);
uni.hideLoading();
},
fail:err={//函数失败
拒绝(错误);
uni.hideLoading();
}
});
})
}
常量={
get:(url,params)=请求('GET',url,params),
post:(url,params)=请求('POST',url,params)
}
exportdefaultapi;//抛出接口
2.在请求文件目录下创建home文件夹,并在home文件夹下新建index.js文件。
//所有主页请求都在这里维护。
importapifrom'./index.js';
exportconstget=params=api.get('path',params);//获取请求
exportconstpost=params=api.post('path',params);//发布请求
3、在需要请求数据的页面中
import请求名称from'文件路径';
小程序能调用哪些API
从下图的API目录中我们可以看到,小程序的技术支持分为8个部分:网络、媒体、文件、数据缓存、位置、设备、接口、开放接口。接下来,我们就来逐一来看一下。
1、网络功能这部分网络支持手机文件的上传和下载。另外,值得注意的是,它支持WebSocket,这意味着可以通过小程序实现手机和服务器之间的双向通信,从而可以将小程序内容的变化主动推送给用户。例如,如果用户的文章收到评论,评论将自动出现在页面上,而无需用户刷新页面。另外,还可以利用该技术创建聊天室,可以是一对一的,就像QQ一样,也可以是多对多的,就像QQ群一样。
2、媒体在媒体的支持下,我们可以实现三个功能:1、从手机本地相册上传图片,预览图片并处理相关图片信息;2、实现录音的录制、上传和播放;3.实现背景音乐的播放,控制背景音乐。需要注意的是,录音与微信公众号相同。只能录制60秒。如果超过60秒,就会自动停止。不过微信公众号的录音API应该是有bug。苹果系统下,微信录音达到45秒就会出错,音频播放乱码。不知道小程序有没有这个问题。不过,为了避免掉坑,可以考虑使用七牛。
3.我不会对文件进行截图。比较简单。支持上传和下载手机存储中的文件。您可以浏览手机存储目录和文件信息。
4.数据缓存数据缓存有效地实现了浏览器的本地缓存功能,这意味着开发者可以自己管理客户端的缓存,这有助于为我们最终用户节省流量。
5、位置功能可以帮助小程序实现获取用户所在位置、地图定位的功能。导航?这应该是地图应用程序的问题。
6.装备装备这有点夸张了。总共分为6个部分。首先,您可以获取手机的系统信息,其中可以包括手机型号、像素密度、屏幕尺寸以及操作系统和客户端信息。这有助于小程序页面布局和功能细节更好地适应各种手机。二是获取用户手机网络状态:2g、3g、4g、wifi。可以提醒用户在wifi下观看,节省流量~重力传感器和指南针可以实现运动和互动游戏功能,比如微信运动、摇一摇。拨打电话可以嵌入客服电话或者类似滴滴联系司机的场景。最后还有微信扫码接口,调用相机离线扫描二维码。
7、这部分界面实现了基本的弹框效果和导航效果。另外,特别需要注意的是,微信实现了html5canvas的功能,这意味着在小程序中可以实现一些简单的小游戏。和卡通场景绘制。但目前仅支持2D界面的绘制,尚不支持3D。
8、开放接口开放接口功能也有很多类别。首先,为小程序提供登录和会话管理功能,这样登录功能的开发可以事半功倍。其次,获取用户的微信账号信息。当然,能获取到什么信息都是在微信允许的范围内的,比如openid、昵称、头像等。很多朋友问:我能拿到用户的电话号码和微信号吗?怎么会这样?想都别想。三是支持微信支付。第四,模板消息。这种消息实际上存在于微信认证服务号中。请注意,这是一个经过认证的服务帐户(而不是订阅帐户)。很多朋友不明白这样的新闻有什么用?可以主动发送给用户,没有频率限制。是不是很神奇?但内容受模板格式限制,无法发送营销内容。是不是让你失望了,哈哈。它是干什么用的?想象一下银行微信公众号向您发送的消费通知。是的,这是一条模板消息。第五,客服消息支持微信客户界面,功能非常强大。最后支持分享到微信好友和朋友圈的功能,支持获取微信小程序的二维码。
当然,如果读完之后你还是不明白,可以参考云筑小程序,相信可以解决你的问题。
微信小程序加速度计api的使用以及坑坑坑
小程序的加速度计API中有3个方法。
1.wx.onAccelerometerChange(CALLBACK)监听加速度数据,频率:5次/秒。接口调用后会自动启动监听,每次调用都会注册一个。
2.wx.startAccelerometer(OBJECT)启动监听方法
坑来了。没错,就是第三种方法
3.wx.stopAccelerometer(OBJECT)停止监听。该方法停止监视。如果再次摇晃手机,将不会使用回调方法,但不会解除监听。
那么问题来了。每次在某个页面调用第一个api时,都会注册一个监听器。第三个api无法删除侦听器。结果,当你再次打开时,就会有多个回调方法同时运行。就会出现问题。那么如何避免呢?
解决办法:微信小程序启动时调用监听方法。在return方法中,可以通过pages获取当前页面。只需要在当前页面调用你想要回调的方法即可。
onLaunch:函数(){
wx.onAccelerometerChange((e)={
varpages=getCurrentPages()varcurrentPage=pages[pages.length-1]
if(currentPage.onAccelerometerChange){
currentPage.onAccelerometerChange(e)
}
})
}
然后就可以在当前页面的onAccelerometerChange(e)方法中做你想做的事情了。