微信小程序作為一款輕量級的應用,因其有著較強的靈活性,開發(fā)成本低,推廣裂變快等特點,在很多領(lǐng)域得到廣泛的應用。
本文基于小程序在電商領(lǐng)域的應用場景,將常見的安全問題進行分析匯總,整理成安全需求基線,以期不斷地完善,然后在更多的業(yè)務場景下應用。
01、基礎(chǔ)安全
(1)涉及數(shù)據(jù)敏感,采用私有化部署。
(2)通過負載均衡、內(nèi)容分發(fā)等技術(shù),保障業(yè)務高可用。
(3)PS:比較大的圖片要進行優(yōu)化,同時避免出現(xiàn)比較大的圖片帶有隨機參數(shù)(jpg?t=xx),一旦引流,所有圖片請求回源,將導致帶寬跑滿現(xiàn)象。
02、重點功能
(1)用戶注冊授權(quán),添加隱私政策。
(2)文件上傳,對上傳文件的類型、大小、擴展名等信息進行校驗,防止任意文件上傳。
(3)用戶自定義發(fā)布的內(nèi)容需進行內(nèi)容審核(例如:文本、圖片、視頻等),可調(diào)用公有云API 檢測。
03、業(yè)務安全
(1)防越權(quán)繞過,對用戶權(quán)限進行認證。
(2)例如,遍歷用戶id導致敏感信息泄露,需對用戶進行權(quán)限驗證。
(3)防業(yè)務邏輯繞過,防止用戶可以直接執(zhí)行后面的流程,從而繞過某些階段。
(4)例如:積分兌換的場景,將積分扣減和兌換拆分為兩個接口,攻擊者可直接執(zhí)行兌換,不執(zhí)行積分扣減。
(5)防數(shù)據(jù)篡改,重要業(yè)務數(shù)據(jù)需后端進行校驗。
(6)例如:用戶的游戲成績直接篡改可用于游戲作弊,需增加簽名認證,防止數(shù)據(jù)被篡改。
(7)防條件競爭繞過限制。
(8)例如:在做積分抽獎時,應考慮如何應對高并發(fā)攻擊。
04、敏感信息保護
(1)OpenID、unionid作為微信用戶的唯一身份標示,禁止在業(yè)務系統(tǒng)的URL、返回參數(shù)等地方使用OpenID、unionid。
(2)禁止在小程序前端代碼中,寫入明文的AppId和secret、AccessKey及其他敏感配置信息。
(3)敏感數(shù)據(jù)前端展示,應進行脫敏處理,敏感數(shù)據(jù)包括但不僅限于姓名、手機號、地址等。
05、身份鑒別
在實現(xiàn)會話管理功能時,應同時滿足以下幾條要求:
(1)建立唯一的,具有一定復雜度的用戶會話標識。
(2)通過OpenID或unionid識別用戶身份,并建立賬號綁定關(guān)系。
(3)應具有超時退出機制,超過一定空閑時間,會話標識失效。
(4)禁止使用不安全的鑒權(quán)方式,例如使用手機號鑒權(quán),可能存在信息泄露的風險。
06、其他
(1)正式發(fā)布前,要關(guān)閉小程序調(diào)試模式。
(2)進行滲透測試,針對前端代碼和小程序API進行安全檢測。
(3)對小程序前端代碼進行必要的保護措施,如代碼加密、壓縮、混淆、反調(diào)試等。