眾所周知,微信小程序的代碼安全性很弱,很容易被別人反編譯獲取源碼。我自己的小程序也被別人反編譯拿到源碼還上線了,非常無語。
既然客戶端不好防范,服務端還是可以做點手腳的。
小程序的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地址開個白名單什么的。