其他須知
小程序代碼加固能力
功能介紹
為提高平臺生態安全性,針對小程序開發過程中的安全問題,如代碼易被反編譯,覈心業務邏輯被破譯,算灋易被二次打包等,導致小程序存在被破解、覈心代碼被盜取的風險。 平臺將提供代碼加固功能,可實現對小程序前端代碼進行加密,以防止代碼暴露,提高攻擊者閱讀前端代碼邏輯的難度,同時開發者也應注意自身開發規範的嚴謹性,保證小程序的代碼質量,保護小程序安全。 小程序代碼加固是提供給開發者對小程序前端代碼進行加密的功能,以防止代碼暴露。
使用簡介
代碼加固功能可將JavaScript文件傳遞給加密工具,從而實現字串加密、内容加密、調用轉換、代碼混淆等多項保護措施。 建議將涉及小程序中的敏感數據資訊(類似sdk金鑰等)、覈心算灋邏輯、版本內容等需要進行安全保護的內容,都可以進行代碼加固。
使用流程
1.在小程序項目與app.json同級的目錄中創建tcmpp.config.js文件,可以將一些敏感數據資訊或者覈心算灋等方法寫到此js中匯出使用,在編譯階段,會對tcmpp.config.js進行代碼混淆加密:

2.若需修改tcmpp.config.js文件所在的目錄,如想將此文件放到類似static目錄中,可通過在project.config.json中的obfuscationPath欄位配置tcmpp.config.js所在的目錄路徑,不配置obfuscationPath欄位或者配置為空字符串,則默認會查找與app.json同級目錄所在的tcmpp.config.js。

3.obfuscationPath配置obfuscationPath欄位為Tcmpp.config.js所在目錄路徑:

Taro項目小程序代碼加固支持
1.在taro小程序中,Tcmpp.config.js需要被當作外部原生公共js模塊來進行打包,且Tcmpp.config.js要用小程序js代碼的書寫管道來進行編寫,即使用module.exports進行匯出,保證在taro打包後,Tcmpp.config.js不被打包進taro的產物中,而是在dist中存在一份單獨的Tcmpp.config.js文件,才能在Luffa Cloud的IDE的編譯階段進行代碼混淆加密。 囙此需要結合taro項目配置的externals來對Tcmpp.config.js進行配置,可查看Taro項目引用原生項目的JS文件。
2.hello world項目配置示例:
- 配置taro打包,將static目錄設定alias,並且設定externals相關配置:

3.將Tcmpp.config.js放在與pages同級的static目錄中,在項目pages/index/index.jsx中使用Tcmpp.config.js匯出的內容:


4.由Tcmpp.config.js沒有被打包到taro產物裏,所以需要通過webpack配置手動拷貝到產物dist目錄中:

5.最後記得在project.config.json中配置obfuscationPath欄位為Tcmpp.config.js所在目錄路徑以便IDE能找到此文件進行混淆加密。

uni-app項目小程序代碼加固支持
1.uni-app提供了static目錄,會對此目錄整體複製到最終編譯包內,可查看 uni-app的static目錄 。囙此需要將Tcmpp.config.js也放到static目錄中,且使用 module.exports 的管道進行內容的匯出。

2.在project.config.json中配置obfuscationPath欄位為Tcmpp.config.js所在的static目錄路徑以便IDE能找到此文件進行混淆加密。

IDE中使用Google地圖
功能介紹
在小程序業務開發中如果涉及Google Map相關功能,開發階段希望在IDE中實現預覽,需要在項目中配置Google JavaScript API金鑰,例如使用map組件或相關API時:
- 組件
<map type='google' ...></map>- API
wx.openLocation({
type: 'google',
...
})
wx.chooseLocation({
type: 'google',
...
})使用簡介
考慮到用戶的小程序業務金鑰會採用代碼加固能力,為了方便用戶統一管理金鑰,Google JavaScript API金鑰需要在Tcmpp.config.js文件中進行配置,由於該金鑰僅用於開發階段的IDE預覽,所以採用注釋的管道進行配置,最終小程序編譯打包時會進行過濾。
使用流程
1.創建Tcmpp.config.js文件相關流程與代碼加固時一致,可參見小程序代碼加固能力的使用流程。
2.採用注釋的管道配置Google JavaScript API金鑰,注釋中金鑰關鍵字必須為googleMapApiKey且使用[]包裹金鑰,否則會導致金鑰讀取失敗,格式如下:
//googleMapApiKey[xxxxxxxxxxxxxxxxxxxxxxxxxxxx]3.在IDE中編輯Tcmpp.config.js文件的googleMapApiKey後,由於需要重新注入Google JavaScript API腳本,所以請關閉當前項目並重新打開,IDE也會給予相應的彈窗提示: Google Maps Warning: The Google Maps key has been updated, please close the project and reopen it to initialize。

4.如果配置後在IDE的Console中看到如下提示代表googleMapApiKey配置未生效,請檢查配置是否遵循相關格式。

如果配置後在IDE的Console中看到如下報錯代表金鑰校驗失敗,請檢查是否配置了正確的Google JavaScript API Key。
