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

防止 SQL Injection 入門:輸入端過濾敏感字元的簡單實作

     編輯:關於SqlServer

核心原則

先過濾,再拼接。在組合 SQL 字串前,檢查使用者輸入並移除/轉義敏感字元,比事後過濾完整 SQL 更安全、負擔更小。

需過濾的敏感字元清單

'  >  <  =  !  -  +  *  /  (  )  |  空白

實作範例 (VBScript/ASP)

Function SanitizeSQL(ByVal input)
    Dim badChars, i, ch
    badChars = Array("'", ">", "<", "=", "!", "-", "+", "*", "/", "(", ")", "|", " ")
    For i = 0 To UBound(badChars)
        input = Replace(input, badChars(i), "", 1, -1, vbTextCompare)
    Next
    SanitizeSQL = input
End Function

' 使用方式
Dim safeInput
safeInput = SanitizeSQL(Request.Form("username"))
sql = "SELECT * FROM Users WHERE Name = '" & safeInput & "'"

局限與進階建議

  • 此法屬黑名單機制,難以覆蓋所有變體(編碼、Unicode 同形字等)
  • 最佳實踐:使用參數化查詢 (Parameterized Query / Prepared Statement),如 ADO Command.Parameters、.NET SqlParameter、Java PreparedStatement,徹底分離程式碼與資料
  • 配合最小權限原則:應用程式資料庫帳號僅授予必要物件的 SELECT/INSERT/UPDATE/DELETE
  • 部署 WAF (Web Application Firewall) 作為第二道防線
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved