搜尋
首頁PHP 函式庫其它類別庫防SQL注入的php類別函式庫
防SQL注入的php類別函式庫
<?php
class sqlsafe {
  private $getfilter = "'|(and|or)\b.+?(>|<|=|in|like)|\/\*.+?\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)";
  private $postfilter = "\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|\/\*.+?\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)";
  private $cookiefilter = "\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|\/\*.+?\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)";
  public function __construct() {
    foreach($_GET as $key=>$value){$this->stopattack($key,$value,$this->getfilter);}
    foreach($_POST as $key=>$value){$this->stopattack($key,$value,$this->postfilter);}
    foreach($_COOKIE as $key=>$value){$this->stopattack($key,$value,$this->cookiefilter);}
  }
  public function stopattack($StrFiltKey, $StrFiltValue, $ArrFiltReq){
    if(is_array($StrFiltValue))$StrFiltValue = implode($StrFiltValue);
    if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue) == 1){
      $this->writeslog($_SERVER["REMOTE_ADDR"]."    ".strftime("%Y-%m-%d %H:%M:%S")."    ".$_SERVER["PHP_SELF"]."    ".$_SERVER["REQUEST_METHOD"]."    ".$StrFiltKey."    ".$StrFiltValue);
      showmsg('您提交的参数非法,系统已记录您的本次操作!','',0,1);
    }
  }
  public function writeslog($log){
    $log_path = CACHE_PATH.'logs'.DIRECTORY_SEPARATOR.'sql_log.txt';
    $ts = fopen($log_path,"a+");
    fputs($ts,$log."\r\n");
    fclose($ts);
  }
}

本類別庫首先建構函數參數,然後檢查並寫日誌最後檢查SQL注入日誌。是一個很好用的防SQL注入的php類別函式庫


#
免責聲明

本站所有資源皆由網友貢獻或各大下載網站轉載。請自行檢查軟體的完整性!本站所有資源僅供學習參考。請不要將它們用於商業目的。否則,一切後果都由您負責!如有侵權,請聯絡我們刪除。聯絡方式:admin@php.cn

相關文章

PHP防SQL注入的一個類別PHP防SQL注入的一個類別

25Jul2016

PHP防SQL注入的一個類別

Go 的「database/sql」函式庫如何防止 SQL 注入?Go 的「database/sql」函式庫如何防止 SQL 注入?

13Dec2024

在 Go 中使用「database/sql」防範 SQL 注入 在建立 Web 應用程式時,防止 SQL 注入攻擊至關重要。經過...

Go的database/sql函式庫如何防止SQL注入攻擊?Go的database/sql函式庫如何防止SQL注入攻擊?

20Dec2024

使用「database/sql」函式庫防止 Go 中的 SQL 注入攻擊在 Web 開發中,SQL 注入攻擊帶來了顯著的安全性...

Go的「database/sql」函式庫如何防止SQL注入攻擊?Go的「database/sql」函式庫如何防止SQL注入攻擊?

25Dec2024

在 Go 中使用“database/sql”防止 SQL 注入攻擊來建立 Web 應用程式時,保護輸入對於防止惡意攻擊至關重要...

哪個 PHP 函式庫提供卓越的 SQL 注入防護:PDO 還是 mysql_real_escape_string?哪個 PHP 函式庫提供卓越的 SQL 注入防護:PDO 還是 mysql_real_escape_string?

22Oct2024

PHP 資料物件 (PDO) 為查詢轉義提供了比 mysql_real_escape_string 更好的替代方案。 PDO 的優點包括資料庫獨立性、自動轉義、參數替換和改進的錯誤處理,使其成為更強壯的、e

如何有效防止PHP MySQLi應用程式中的SQL注入?如何有效防止PHP MySQLi應用程式中的SQL注入?

10Dec2024

使用 PHP 防止 SQL 注入 MySQLISQL 注入是一種嚴重的安全威脅,它可能允許攻擊者未經授權存取您的...

See all articles