SQL 注入本質
應用未驗證用戶輸入,攻擊者透過正常 Web 埠注入 SQL 片段,竊取/篡改資料、提權掛馬。
三步防禦策略
第一步:通用防注入腳本(僅擋手工測試)
頁面頭部引入過濾腳本,可阻擋手工注入,但自動化分析工具(如 SQL 注入分析器)可繞過並自動探測注入點,幾分鐘內破解管理員帳密。
第二步:理解分析器攻擊邏輯
實測發現:分析器鎖定的是權限標識欄位(如 flag=1),而非特定帳號名。無論管理員帳號如何變換,只要權限欄位可被識別即會被鎖定。
第三步:誘餌帳號 + 字元長度陷阱 + 登入頁長度限制
- 修改表結構:帳號/密碼欄位改為
VARCHAR(255) 或 TEXT。
- 植入誘餌帳號(ID=1):權限最高,帳號密碼填入 超過 1000 個中文字元。分析器嘗試暴力破解時會進入全負荷甚至資源耗盡死機。
- 真實管理員帳號隱藏於高 ID(如 ID=549)。
- 登入頁面強制長度驗證:限制輸入長度(如 20 字元),誘餌帳號因超長被攔截,真實帳號正常通行。
安全性評估
- 增加攻擊成本:分析器需處理超長字串,極大降低破解效率
- 非絕對防禦:若攻擊者針對性繞過長度檢查,仍需結合參數化查詢、WAF、最小權限原則等纵深防禦
- 核心修正:根治 SQL 注入必須使用參數化查詢/預編譯語句,本文方案屬緩解措施