本文旨在安全教育與防禦,展示常見攻擊向量以便開發者/管理員建立防護。嚴禁用於非授權測試或非法用途。
-- 原始查詢
sql = "SELECT * FROM users WHERE username='" & txtUser & "' AND pwd='" & txtPwd & "'"
-- 攻擊輸入:txtPwd = ' OR '1'='1
-- 實際執行
SELECT * FROM users WHERE username='admin' AND pwd='' OR '1'='1'
-- 書籍查詢
SELECT name, content FROM books WHERE bookname='Linux入門'
-- 攻擊輸入:Linux入門' UNION SELECT username, password FROM users--
若驅動程式/設定允許批次執行(如 `;` 分隔),攻擊者可注入 DROP TABLE、SHUTDOWN、xp_cmdshell 等破壞指令。
輸入:Linux入門'; DROP TABLE users;--
sa / `sysadmin` 角色可直接執行作業系統指令。| 層面 | 措施 |
|---|---|
| 開發 | 參數化查詢/預存程序、嚴格輸入驗證、最小權限帳號、錯誤訊息通用化 |
| 資料庫 | 停用 `xp_cmdshell`、`xp_reg*` 等高危擴充程序、移除 `sa`/重設強密碼、啟用審計 |
| 網路/主機 | 資料庫不直接對外、防火牆限制來源 IP、關閉非必要埠、修補 OS/DB 补丁 |
| 維運 | 定期掃描異常登入/物件變更、備份驗證、應急演練 |
資料庫安全是系統安全的核心防線。參數化查詢 + 最小權限 + 及時修補 + 審計監控 是最具性價比的防禦組合。