小程序上线一段时间,经常出现莫名用户注册,一开始非常可疑,后面越来越多,确定是黑客攻击。
接口都加了签名验证,但是黑客依然畅通无阻的注册访问,当时也是一脸懵逼。
经过反复确认,签名验证没有问题,唯一有问题的很可能是小程序出问题,其实际上小程序相当于前端页面,非常容易被反编译。
那问题来了,如何反编译?答案是:目前没有办法。微信官方应该要努力解决这个问题。
既然小程序代码被反编译无法改变,那么如何实现请求安全呢?答案是:接口签名验证;
接口签名验证是小程序发起一个请求,携带一个签名(字符串)及参数信息,服务端校验签名,如果一致则通过验证,返回接口数据;这里前后端都会有个共同的密钥,问题就出在小程序必须把密钥写在代码中,这是被攻击的根源;
如何防止黑客拿到密钥呢?目前唯一能解决的是通过云开发,将密钥放到云函数或云数据库中,这样即使黑客反编译了小程序代码,运行时也无法拿到密钥,这样也就无法发起请求。
哈哈...终于摆脱了黑客的骚挠了!
成本也上来了,云开发确实是解决安全性的一个好办法
微信小程序类似web app,从安全性上来说和H5类似。所以单从小程序端来解决安全性问题是几乎没有很好的办法。通过将密钥放到云函数的模式确实能提升黑客的攻击成本,但是这种模式还是存在安全风险,比如只要获取到返回的密钥即可破解。而且业务上也需要进行一些流程改造增加一些安全成本投入。
最推荐的方式是使用微信云托管,利用微信私有链路的能力,实时保障通信安全。对小程序业务来说还是保持发送http请求不变,http请求会自动转译成微信的私有协议,所有的通信数据都会进行实时加密,通过安全的链路传到后端服务中。防止通信数据被爬被窃取、防DDoS攻击、防DNS劫持。
云托管:https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/basic/intro
云函数获取公钥 能通过抓包抓到吗?