微信小程序 安全指引·后臺

2020-07-31 13:40 更新

后臺(包括云函數(shù)與自建后臺)

注入漏洞

注入漏洞(SQL、 命令等)通常指用戶繞過后臺代碼限制,直接在數(shù)據(jù)庫、 shell 內(nèi)執(zhí)行自定義代碼。

常見的注入漏洞有:

SQL 注入

SQL 注入是指 Web 程序代碼中對于用戶提交的參數(shù)未做有效過濾就直接拼接到 SQL 語句中執(zhí)行,導(dǎo)致參數(shù)中的特殊字符打破了 SQL 語句原有邏輯,黑客可以利用該漏洞執(zhí)行任意 SQL 語句。

開發(fā)建議:

  1. 使用數(shù)據(jù)庫提供的參數(shù)化查詢來進行數(shù)據(jù)庫操作,不允許直接通過拼接字符串的方式來合成 SQL 語句。
  2. 如果存在部分情況需要通過拼接的方式來合成 SQL ,拼接的變量必須要經(jīng)過處理:對于整數(shù),需要判斷變量是否為整數(shù)類型。對于字符串,需要對單引號、雙引號等做轉(zhuǎn)義處理。
  3. 避免 Web 應(yīng)用顯示 SQL 的報錯信息。
  4. 保證 Web 應(yīng)用里每一數(shù)據(jù)層的編碼統(tǒng)一。

命令注入

命令注入漏洞是指 Web 應(yīng)用未對用戶可控參數(shù)進行有效過濾,攻擊者可以構(gòu)造惡意參數(shù)拼接到命令上來執(zhí)行任意命令。

開發(fā)建議:

  • 對用戶輸入的數(shù)據(jù)(如 ;、|、&等)進行過濾或轉(zhuǎn)義。

弱口令

弱口令指管理后臺的用戶名密碼設(shè)置得較為簡單或者使用默認(rèn)帳號。攻擊者可以通過登錄這些帳號修改后臺數(shù)據(jù)或進行下一步的入侵操作。

開發(fā)建議:

  1. 后臺服務(wù)禁用默認(rèn)帳號,修改后臺弱口令。
  2. 敏感服務(wù)增加二次驗證機制,如短信驗證碼、郵箱驗證碼等。

文件上傳漏洞

文件上傳漏洞是指 Web 應(yīng)用允許用戶上傳指定文件,但未對文件類型、格式等做合法性校驗,導(dǎo)致可以上傳非預(yù)期格式的文件。

開發(fā)建議:

  • 正確解析上傳文件的文件類型,通過白名單的方式限制可上傳的文件類型。

文件下載

文件下載漏洞是指 Web 應(yīng)用允許用戶通過指定路徑和文件名的方式來下載對應(yīng)的文件,但未正確限制可下載文件所在的目錄范圍,導(dǎo)致預(yù)期范圍外的文件被下載泄露。

開發(fā)建議:

  1. 正確限制可下載文件所在的目錄范圍
  2. 通過指定文件 id 的方式來查找下載對應(yīng)的文件

目錄遍歷

目錄遍歷是指由后臺服務(wù)對用戶輸入驗證不足或配置不嚴(yán)謹(jǐn)導(dǎo)致的服務(wù)器目錄內(nèi)容泄漏。外部可能通過目錄遍歷獲取系統(tǒng)文件、后臺代碼等敏感文件。

開發(fā)建議:

  1. web 服務(wù)配置
    1. 服務(wù)端禁止展示目錄
    2. 設(shè)置目錄訪問權(quán)限
    3. 在每個目錄下放置一個空的 index.html 頁面
  2. web 應(yīng)用代碼
    1. 嚴(yán)格檢查文件路徑參數(shù),限定文件的范圍

條件競爭

條件競爭比較常見的例子是攻擊者通過并發(fā) https 請求而達(dá)到多次獲獎、多次收獲、多次獲贈等非正常邏輯所能觸發(fā)的效果。

  • 漏洞代碼示例 
    // 從DB里查詢該用戶剩余獲獎次數(shù),初始值為1
    int remain_times = SelectRemainTimes();
    
    if(remain_times > 0){
        EarnRewards();          // 用戶獲得獎勵
        ClearRemainTimes();     // 在DB里把該用戶的剩余獲獎次數(shù)清零
    }

    開發(fā)者的設(shè)計本意是只允許用戶獲得一次獎勵,但當(dāng)出現(xiàn)并發(fā)請求時,有可能出現(xiàn)請求 A 和請求 B 都剛好執(zhí)行完第2行代碼的情況,此時兩個請求的 remain_times 都為1,也就是可以通過第4行代碼的判斷,獲得兩次獎勵。

開發(fā)建議:

  • 對關(guān)鍵(完整)邏輯加鎖操作或把關(guān)鍵邏輯以隊列任務(wù)的形式去進行處理。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號