SQL 注入仍是面向網際網路之 SQL Server 資料庫最常見的攻擊手法。近年自動化注入攻擊激增,不僅竊取資料、破壞資料表,更植入惡意 JavaScript 感染客戶端。即使網路防火牆再嚴密,只要應用程式使用動態 SQL 且未驗證輸入,風險依然存在。
攻擊者在輸入欄位植入單引號、分號或轉義字元,竄改原本 SQL 命令。例如:
exec sel_CustomerData @CustomerId=47663; truncate TABLE Customer
資料庫將先執行預存程序,再執行 TRUNCATE TABLE 刪除資料。若有外鍵約束,錯誤訊息甚至會洩露資料表結構,助長進一步攻擊。
xp_cmdshell、sp_OA* 等),降低攻擊面。SqlCommand.Parameters、Entity Framework、Dapper 等 ORM 內建參數化),嚴禁字串拼接 SQL。EXEC(@sql) 拼接字串,同樣脆弱。防禦 SQL 注入非單一工具可達成,需「資料庫最小權限 + 應用層參數化 + 持續稽核」三位一體。開發階段即納入安全編碼規範,配合程式碼審查與自動化掃描工具,才能從根本降低風險。