根據台灣阿碼科技 (Armorize Technologies) 監測,2008 年 5 月中旬起,大量中文網站 (含中國大陸、台灣) 遭受自動化 SQL 注入攻擊,已有數千網站被植入惡意程式碼。攻擊特徵:來源 IP 未隱藏、採用暴力枚舉手法、針對所有使用 SQL 的輸入欄位、造成永久性資料竄改。
<script>、<iframe> 等惡意碼。| 層面 | 措施 | 優先級 |
|---|---|---|
| 開發 | 全面採用參數化查詢 / 預存程序,嚴禁字串拼接 SQL | ★★★★★ |
| 開發 | 輸入驗證:白名單校驗、長度限制、型別轉換 | ★★★★☆ |
| 資料庫 | 最小權限原則:應用帳號僅擁有必要 CRUD 權限,拒絕 DDL、xp_cmdshell | ★★★★★ |
| 資料庫 | 關閉不必要的擴展預存程序、CLR、OLE Automation | ★★★★☆ |
| 網路 | WAF (Web Application Firewall) 部署規則攔截常見注入特徵 | ★★★★☆ |
| 維運 | 定期掃描資料庫異常字串 (如 <script>, eval(, document.write) | ★★★☆☆ |
| 維運 | 啟用 SQL Server 稽核 / Extended Events 記錄失敗登入、異常查詢 | ★★★☆☆ |
| 應急 | 建立資料庫備份與還原演練,確保 RPO/RTO 符合業務需求 | ★★★★★ |
-- 掃描所有使用者資料表的字串欄位是否包含可疑標籤
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += '
SELECT ''' + QUOTENAME(SCHEMA_NAME(o.schema_id)) + '.' + QUOTENAME(o.name) + ''' AS TableName,
''' + QUOTENAME(c.name) + ''' AS ColumnName,
COUNT(*) AS AffectedRows
FROM ' + QUOTENAME(SCHEMA_NAME(o.schema_id)) + '.' + QUOTENAME(o.name) + '
WHERE ' + QUOTENAME(c.name) + ' LIKE ''%