SQL 注入仍是 Web 應用首位威脅。本文提出三層防禦體系:參數化查詢(根治)、注入分析器繞過對策(緩解)、蜜罐帳號誘捕(延遲/誤導攻擊者)。
SqlCommand.Parameters.Add、PreparedStatement.setString、ORM 內建)。"SELECT * FROM Users WHERE Name = '" + input + "'" ❌sysadmin/db_owner。分析器特徵:不針對特定帳號(如 admin),而是掃描權限欄位(如 flag=1、role=admin)。
UserName='admin_trap'、Role='admin'、Password=超長中文字串(>1000 字)。maxlength="32" 密碼欄位,蜜罐帳號密碼因超長無法送出。if (pwd.Length > 32) return BadRequest();ALTER TABLE Users ALTER COLUMN UserName NVARCHAR(255);
ALTER TABLE Users ALTER COLUMN Password NVARCHAR(MAX); -- 容納蜜罐超長密碼
-- 插入蜜罐帳號
INSERT INTO Users (UserName, Password, Role) VALUES
('admin_trap', REPLICATE(N'誘捕', 500), 'admin');
| 防禦層 | 阻擋對象 | 成本 | 殘留風險 |
|---|---|---|---|
| 參數化查詢 | 所有注入 | 開發規範 | 極低(僅存程序動態 SQL 需注意) |
| 蜜罐帳號 | 自動化掃描器 | 極低 | 針對性手工攻擊無效 | 長度限制 | 蜜罐繞過、異常嘗試 | 極低 | 合法長輸入被擋(需業務評估) |
三層防禦疊加,將 SQL 注入風險從「必中」降為「極難」,保護核心資料資產。