SQL 注入是 Web 應用程式最嚴重的安全威脅之一。本系列兩篇完整解析攻擊原理、風險等級與多層次防禦策略。第一篇聚焦攻擊機制與危害評估。
攻擊者將惡意 SQL 程式碼插入 Web 表單輸入欄位或 URL 查詢字串,欺騙伺服器執行非預期的 SQL 命令。當應用程式直接將使用者輸入拼接進動態 SQL 或作為預存程序參數,且未經驗證與參數化,即構成注入漏洞。
query = "SELECT * FROM Users WHERE login = '" + txtLogin.Text + "' AND password = '" + txtPassword.Text + "'"' OR '1'='1SELECT * FROM Users WHERE login = '' OR '1'='1' AND password = '' OR '1'='1''1'='1' 永真,繞過驗證,攻擊者以第一筆使用者身分(通常是管理員)登入。| 資料庫權限 | 潛在損害 |
|---|---|
| 一般使用者 | 資料竊取、竄改、刪除;存取權限內的所有資料表 |
| db_owner / sysadmin | 全資料庫控制:建立/刪除資料表、修改 Schema、執行 xp_cmdshell 取得作業系統控制權、植入木馬、橫向移動攻擊內網 |
核心成因: 輸入未驗證、動態 SQL 拼接、資料庫權限過度授予。單一防線(如關鍵字過濾)不足以應對自動化攻擊工具(SQLMap 等)。