首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Injection 防禦實戰:SQL Server 2000 四層防護體系與危險內建程序封鎖清單

     編輯:關於SqlServer

前置條件:修補至 SP3

下載 SQL Server 2000 SP3,未修補免談防禦。

第一層:隱藏與埠號變更

  • 企業管理器 → 伺服器屬性 → 網路設定 → TCP/IP 屬性:修改預設埠 1433、勾選「隱藏伺服器」。
  • TCP/IP 篩選封鎖 1433,阻擋直接連線掃描。

第二層:最小權限資料庫角色

  • 建立自訂資料庫角色,僅授予必要物件權限(SELECT/INSERT/UPDATE/DELETE 特定資料表/檢視表、EXECUTE 特定預存程序)。
  • 嚴禁 授予 db_owner、db_securityadmin、db_backupoperator 等高危角色。
  • 建立登入時勿勾選任何伺服器角色。

第三層:移除/封鎖危險內建擴展預存程序

類別程序名稱封鎖指令
登錄/命令執行xp_cmdshellsp_dropextendedproc 'xp_cmdshell'
並重命名 xpsql70.dll 防復原
xp_regread / xp_regwrite / xp_regdeletekey...
xp_regenumkeys / xp_regenumvalues
ActiveX 自動化sp_OACreate / sp_OAMethod / sp_OAGetProperty / sp_OASetProperty同理 sp_dropextendedproc 移除
sp_OADestroy / sp_OAGetErrorInfo / sp_OAStop

攻擊者若擁有 CREATE TABLE 權限,可建暫表接收 xp_regread 回傳值再轉型觸發錯誤訊息外洩資料。寧可誤殺、不可放過,徹底移除高危程序並刪除/重命名對應 DLL。

第四層:程式碼層參數化查詢(根本之道)

雖非資料庫設定,但務必要求開發團隊全面採用參數化查詢/預存程序,杜絕字串拼接 SQL。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved