微信小程序誕生基于微信的社交屬性,依托微信9. 8 億活躍用戶,微信小程序可以說是在微信生態內完成設計裂變。從一開始,微信就為小程序開通了46個場景入口,推廣迅猛。這也使得微信小程序才發布就具備得天獨厚的優勢。 在互聯網界掀起不小的波瀾,已有許多公司發布了自己的小程序,涉及不同的行業領域。大家在體驗小程序用完即走便利的同時,是否對小程序的安全性還存有疑慮。龍兵科技知識付費團隊的小伙伴對微信小程序進行初步的安全技術分析,在此整理出來拋磚引玉,如有描述不當的地方,歡迎糾正,交流。
本文將從小程序的功能模塊安全方面進行剖析,希望能為大家帶來小程序安全方面的認知。
一,功能模塊安全分析
功能模塊安全分析大白將分為4個部分介紹,分別是:
網絡傳輸安全
數據存儲安全
文件存儲安全
掃描二維碼安全
1.1,網絡傳輸安全
微信小程序支持發起通用請求、文件上傳下載、WebSocket通訊機制, 在開發微信小程序的過程中,微信小程序官方強制使用https協議進行網絡請求數據傳輸。小程序請求的域名必須經過微信小程序管理后臺通過服務域名設置特定的安全域名(見下圖),微信小程序僅能訪問已經配置的安全域名下的url,確保網絡請求是安全的。
在網絡文件下載過程中同樣僅支持從含有已配置域名的url下載資源,不是走http/https協議。下載成功后文件臨時存放,通過微信小程序自定義協議wxfile進行訪問,在android平臺通過映射到SD卡上目錄/sdcard/tencent/MicroMsg/wxafiles/wx_id/tmp_[hash_value]。
1.2,數據存儲安全
微信小程序以K/V形式存放在本地緩存,將小程序需要存儲的K/V數據直接存儲到Storage DB緩存,微信小程序進行數據保護需要自行做加密處理。數據存儲在本地DB,微信APP會對DB數據整體做本地加密保護,所以小程序本地存儲數據的安全性依賴于微信數據庫加密方案的安全,策略與EnMicroMsg.db類似。
1.3,文件存儲安全
通過微信小程序下載的文件保存在SD卡/sdcard/tencent/MicroMsg/wxafiles/wx_id/目錄下,通過微信小程序自定義wxfile://協議指向SD卡目錄下的文件。微信App會對存放SD卡的文件有做完整性校驗,無法被篡改。首先,最終存儲的文件名是:對稱加密(文件流內容Alder32校驗和|原始文件名)生成的,最終文件名和文件內容會通過自校驗判斷完整性;其次,本地緩存是通過HASH映射查找文件。所以即使能破解文件名和文件內容,繞過文件自身簽名校驗,篡改為攻擊者的偽造文件,小程序APP也無法映射到該偽造文件進行使用。
1.4,掃描二維碼安全
微信小程序掃一掃功能依賴微信App的原生的掃碼功能;生成小程序特定頁面的專屬二維碼,依賴于微信認證機制的ACCESS_TOKEN,而ACCESS_TOKEN是通過小程序私有的唯一APPID和Appsecret請求得到,攻擊者無法獲知到該信息偽造生成二維碼。
二,說在最后
龍兵科技研發團隊通過對微信小程序平臺安全機制的調研,在龍兵知識付費微信小程序端做改進安全機制,結合微信小程序憑條本身提供的安全機制對知識付費小程序的賬戶安全,文件破解等方面做了安全加強,確保系統數據安全,穩定。