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

PHP SQL 注入關鍵字檢測函數

     編輯:PHP 相關知識

自訂 SQL 關鍵字過濾器

針對 GET/POST 參數進行關鍵字檢測,發現疑似注入特徵即攔截。注意:此為輔助防禦,無法替代參數化查詢。

檢測函數實作

<?php
function Filter_SQL($strData) {
    $strFilter = "'|and|\(|\)|exec|insert|select|delete|update|count|\*|%27|chr|mid|master|truncate|char|declare|union|or";
    $blnFlag = false;
    $arr = explode("|", $strFilter);
    $str = "";
    
    foreach ($arr as $row) {
        $str .= preg_quote($row) . "|";
    }
    $str = trim($str, "|");
    
    if (preg_match('/' . $str . '/i', $strData, $word)) {
        return $word[0]; // 返回匹配到的關鍵字
    }
    return false;
}

// 測試
$string = "fasdf union ";
echo Filter_SQL($string); // 輸出:union
?>

使用建議與局限

  • 位置: 在所有用戶輸入進入業務邏輯前統一調用。
  • 誤報風險: 正常內容可能包含關鍵字(如 "update")、需結合語境判斷。
  • 繞過技巧: 攻擊者可使用編碼、註釋、大小寫變形繞過簡單正則。
  • 根本對策: 參數化查詢(Prepared Statements) 才是徹底解決方案。

現代防護架構

// 輸入驗證層:白名單驗證(型別、長度、格式)
// 業務邏輯層:參數化查詢
// 資料庫層:最小權限帳號、WAF 防火牆

關鍵字過濾屬於「黑名單」機制,永遠跟不上攻擊變種。請將核心防禦投入於參數化查詢與輸入白名單驗證。

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