新聞中心
后臺(tái)(包括云函數(shù)與自建后臺(tái))
注入漏洞
注入漏洞(SQL、 命令等)通常指用戶繞過后臺(tái)代碼限制,直接在數(shù)據(jù)庫、 shell 內(nèi)執(zhí)行自定義代碼。

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的青山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
常見的注入漏洞有:
SQL 注入
SQL 注入是指 Web 程序代碼中對(duì)于用戶提交的參數(shù)未做有效過濾就直接拼接到 SQL 語句中執(zhí)行,導(dǎo)致參數(shù)中的特殊字符打破了 SQL 語句原有邏輯,黑客可以利用該漏洞執(zhí)行任意 SQL 語句。
開發(fā)建議:
- 使用數(shù)據(jù)庫提供的參數(shù)化查詢來進(jìn)行數(shù)據(jù)庫操作,不允許直接通過拼接字符串的方式來合成 SQL 語句。
- 如果存在部分情況需要通過拼接的方式來合成 SQL ,拼接的變量必須要經(jīng)過處理:對(duì)于整數(shù),需要判斷變量是否為整數(shù)類型。對(duì)于字符串,需要對(duì)單引號(hào)、雙引號(hào)等做轉(zhuǎn)義處理。
- 避免 Web 應(yīng)用顯示 SQL 的報(bào)錯(cuò)信息。
- 保證 Web 應(yīng)用里每一數(shù)據(jù)層的編碼統(tǒng)一。
命令注入
命令注入漏洞是指 Web 應(yīng)用未對(duì)用戶可控參數(shù)進(jìn)行有效過濾,攻擊者可以構(gòu)造惡意參數(shù)拼接到命令上來執(zhí)行任意命令。
開發(fā)建議:
- 對(duì)用戶輸入的數(shù)據(jù)(如 ;、|、&等)進(jìn)行過濾或轉(zhuǎn)義。
弱口令
弱口令指管理后臺(tái)的用戶名密碼設(shè)置得較為簡單或者使用默認(rèn)帳號(hào)。攻擊者可以通過登錄這些帳號(hào)修改后臺(tái)數(shù)據(jù)或進(jìn)行下一步的入侵操作。
開發(fā)建議:
- 后臺(tái)服務(wù)禁用默認(rèn)帳號(hào),修改后臺(tái)弱口令。
- 敏感服務(wù)增加二次驗(yàn)證機(jī)制,如短信驗(yàn)證碼、郵箱驗(yàn)證碼等。
文件上傳漏洞
文件上傳漏洞是指 Web 應(yīng)用允許用戶上傳指定文件,但未對(duì)文件類型、格式等做合法性校驗(yàn),導(dǎo)致可以上傳非預(yù)期格式的文件。
開發(fā)建議:
- 正確解析上傳文件的文件類型,通過白名單的方式限制可上傳的文件類型。
文件下載
文件下載漏洞是指 Web 應(yīng)用允許用戶通過指定路徑和文件名的方式來下載對(duì)應(yīng)的文件,但未正確限制可下載文件所在的目錄范圍,導(dǎo)致預(yù)期范圍外的文件被下載泄露。
開發(fā)建議:
- 正確限制可下載文件所在的目錄范圍
- 通過指定文件 id 的方式來查找下載對(duì)應(yīng)的文件
目錄遍歷
目錄遍歷是指由后臺(tái)服務(wù)對(duì)用戶輸入驗(yàn)證不足或配置不嚴(yán)謹(jǐn)導(dǎo)致的服務(wù)器目錄內(nèi)容泄漏。外部可能通過目錄遍歷獲取系統(tǒng)文件、后臺(tái)代碼等敏感文件。
開發(fā)建議:
- web 服務(wù)配置
- 服務(wù)端禁止展示目錄
- 設(shè)置目錄訪問權(quán)限
- 在每個(gè)目錄下放置一個(gè)空的 index.html 頁面
- web 應(yīng)用代碼
- 嚴(yán)格檢查文件路徑參數(shù),限定文件的范圍
條件競爭
條件競爭比較常見的例子是攻擊者通過并發(fā) https 請(qǐng)求而達(dá)到多次獲獎(jiǎng)、多次收獲、多次獲贈(zèng)等非正常邏輯所能觸發(fā)的效果。
- 漏洞代碼示例
// 從DB里查詢?cè)撚脩羰S喃@獎(jiǎng)次數(shù),初始值為1 int remain_times = SelectRemainTimes(); if(remain_times > 0){ EarnRewards(); // 用戶獲得獎(jiǎng)勵(lì) ClearRemainTimes(); // 在DB里把該用戶的剩余獲獎(jiǎng)次數(shù)清零 }開發(fā)者的設(shè)計(jì)本意是只允許用戶獲得一次獎(jiǎng)勵(lì),但當(dāng)出現(xiàn)并發(fā)請(qǐng)求時(shí),有可能出現(xiàn)請(qǐng)求 A 和請(qǐng)求 B 都剛好執(zhí)行完第2行代碼的情況,此時(shí)兩個(gè)請(qǐng)求的 remain_times 都為1,也就是可以通過第4行代碼的判斷,獲得兩次獎(jiǎng)勵(lì)。
開發(fā)建議:
- 對(duì)關(guān)鍵(完整)邏輯加鎖操作或把關(guān)鍵邏輯以隊(duì)列任務(wù)的形式去進(jìn)行處理。
分享文章:創(chuàng)新互聯(lián)小程序教程:微信小程序安全指引·后臺(tái)
標(biāo)題來源:http://www.5511xx.com/article/dpojchs.html


咨詢
建站咨詢
