检测微信小程序是否被反编译获取源码

时间:2022-01-26 17:55:56

众所周知,微信小程序的代码安全性很弱,很容易被别人反编译获取源码。我自己的小程序也被别人反编译拿到源码还上线了,非常无语。

既然客户端不好防范,服务端还是可以做点手脚的。

小程序的Referer是不可以更改的,从手机上发出的请求的Referer一般是这样

https://servicewechat.com/wx05ac2038cb1a1286/1000/page-frame.html

结构很清晰,可以分为四部分:

https://servicewechat.com是小程序的域名,wx05ac2038cb1a1286是小程序的APPID,1000这个数字是什么不清楚,不过看这个数字有很多,大概率是通过小程序不同页面发起的请求对应的数字不同,page-frame.html这个不用管,每个请求最后都一样。

如果你想过滤掉所以来自微信小程序的请求,只需要在加一个Referer检测的中间件,所有Referer里包含“https://servicewechat.com”的请求全部返回500就可以了。

别人拿到你的代码,肯定要在开发者工具里运行的,小程序通过开发者工具发出的请求的Referer和通过手机发出的是不同的

https://servicewechat.com/wx05ac2038cb1a1286/devtools/page-frame.html

可以看出,通过开发者工具发出的请求Referer里和普通手机发出的请求的唯一区别就是原本的数字变成了devtools,所以可以加个中间件拦截所有Referer里包含devtools的请求,当然也可以拦截到请求以后直接将请求的IP地址拉黑,一劳永逸,这样即便是用手机也无法访问你的小程序了。

当然这样也有个问题,就是你自己在开发者工具调试的时候也没办法访问服务器,可以给自己的IP地址开个白名单什么的。