本文将從小(xiǎo)程序的功能模塊安全方面進行剖析,希望能爲大(dà)家帶來小(xiǎo)程序安全方面的認知(zhī)。
一(yī),功能模塊安全分(fēn)析
功能模塊安全分(fēn)析大(dà)白(bái)将分(fēn)爲4個部分(fēn)介紹,分(fēn)别是:
網絡傳輸安全
數據存儲安全
文件存儲安全
掃描二維碼安全
1.1,網絡傳輸安全
微信小(xiǎo)程序支持發起通用請求、文件上傳下(xià)載、WebSocket通訊機制, 在開(kāi)發微信小(xiǎo)程序的過程中(zhōng),微信小(xiǎo)程序官方強制使用https協議進行網絡請求數據傳輸。小(xiǎo)程序請求的域名必須經過微信小(xiǎo)程序管理後台通過服務域名設置特定的安全域名(見下(xià)圖),微信小(xiǎo)程序僅能訪問已經配置的安全域名下(xià)的url,确保網絡請求是安全的。
在網絡文件下(xià)載過程中(zhōng)同樣僅支持從含有已配置域名的url下(xià)載資(zī)源,不是走http/https協議。下(xià)載成功後文件臨時存放(fàng),通過微信小(xiǎo)程序自定義協議wxfile進行訪問,在android平台通過映射到SD卡上目錄/sdcard/tencent/MicroMsg/wxafiles/wx_id/tmp_[hash_value]。
1.2,數據存儲安全
微信小(xiǎo)程序以K/V形式存放(fàng)在本地緩存,将小(xiǎo)程序需要存儲的K/V數據直接存儲到Storage DB緩存,微信小(xiǎo)程序進行數據保護需要自行做加密處理。數據存儲在本地DB,微信APP會對DB數據整體(tǐ)做本地加密保護,所以小(xiǎo)程序本地存儲數據的安全性依賴于微信數據庫加密方案的安全,策略與EnMicroMsg.db類似。
1.3,文件存儲安全
通過微信小(xiǎo)程序下(xià)載的文件保存在SD卡/sdcard/tencent/MicroMsg/wxafiles/wx_id/目錄下(xià),通過微信小(xiǎo)程序自定義wxfile://協議指向SD卡目錄下(xià)的文件。微信App會對存放(fàng)SD卡的文件有做完整性校驗,無法被篡改。首先,最終存儲的文件名是:對稱加密(文件流内容Alder32校驗和|原始文件名)生(shēng)成的,最終文件名和文件内容會通過自校驗判斷完整性;其次,本地緩存是通過HASH映射查找文件。所以即使能破解文件名和文件内容,繞過文件自身簽名校驗,篡改爲攻擊者的僞造文件,小(xiǎo)程序APP也無法映射到該僞造文件進行使用。
1.4,掃描二維碼安全
微信小(xiǎo)程序掃一(yī)掃功能依賴微信App的原生(shēng)的掃碼功能;生(shēng)成小(xiǎo)程序特定頁面的專屬二維碼,依賴于微信認證機制的ACCESS_TOKEN,而ACCESS_TOKEN是通過小(xiǎo)程序私有的唯一(yī)APPID和Appsecret請求得到,攻擊者無法獲知(zhī)到該信息僞造生(shēng)成二維碼。