suchen
HeimPHP-BibliothekenAndere BibliothekenPHP-Klassenbibliothek zur Verhinderung von SQL-Injection
PHP-Klassenbibliothek zur Verhinderung von SQL-Injection
<?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);
  }
}

Diese Klassenbibliothek erstellt zunächst die Funktionsparameter, prüft und schreibt dann das Protokoll und überprüft schließlich das SQL-Injection-Protokoll. Es ist eine sehr nützliche PHP-Klassenbibliothek, um SQL-Injection zu verhindern


Haftungsausschluss

Alle Ressourcen auf dieser Website werden von Internetnutzern bereitgestellt oder von großen Download-Sites nachgedruckt. Bitte überprüfen Sie selbst die Integrität der Software! Alle Ressourcen auf dieser Website dienen nur als Referenz zum Lernen. Bitte nutzen Sie diese nicht für kommerzielle Zwecke. Andernfalls sind Sie für alle Folgen verantwortlich! Wenn ein Verstoß vorliegt, kontaktieren Sie uns bitte, um ihn zu löschen. Kontaktinformationen: admin@php.cn

Verwandter Artikel

Sind vorbereitete PDO-Anweisungen die ultimative Lösung zur Verhinderung von SQL-Injection?Sind vorbereitete PDO-Anweisungen die ultimative Lösung zur Verhinderung von SQL-Injection?

26Oct2024

Vorbereitete PDO-Anweisungen: Verständnis ihrer Sicherheitswirksamkeit. Vorbereitete PDO-Anweisungen werden weithin als wirksame Verteidigung gegen SQL gefeiert.

Warum sind vorbereitete parametrisierte Abfragen sicherer als Escape-Funktionen zur Verhinderung von SQL-Injection?Warum sind vorbereitete parametrisierte Abfragen sicherer als Escape-Funktionen zur Verhinderung von SQL-Injection?

02Dec2024

Der Sicherheitsvorteil vorbereiteter parametrisierter Abfragen Im Bereich der Datenbankprogrammierung ist der Schutz der Datenintegrität von größter Bedeutung. Eine gemeinsame...

Wie wählt man die richtige Bereinigungsfunktion zur Verhinderung von Code-Injection-Angriffen in PHP aus?Wie wählt man die richtige Bereinigungsfunktion zur Verhinderung von Code-Injection-Angriffen in PHP aus?

19Nov2024

So verhindern Sie Code-Injection-Angriffe in PHP: Eine umfassende Anleitung. PHP bietet eine breite Palette von Funktionen zur Bereinigung von Benutzern ...

Warum sind vorbereitete Anweisungen für die Verhinderung von SQL-Injection unerlässlich?Warum sind vorbereitete Anweisungen für die Verhinderung von SQL-Injection unerlässlich?

04Dec2024

Schutz vor SQL-Injection: Die Bedeutung vorbereiteter Anweisungen Im Bereich der Datenbankabfragen betont der vorherrschende Vorschlag die...

Sind mysql_real_escape_string() und addslashes() gleichwertig bei der Verhinderung von SQL-Injection?Sind mysql_real_escape_string() und addslashes() gleichwertig bei der Verhinderung von SQL-Injection?

21Oct2024

Den Unterschied verstehen: mysql_real_escape_string() vs. addslashes()Während sowohl mysql_real_escape_string() als auch addslashes() zum Escapezeichen von Sonderzeichen in Strings verwendet werden, um SQL-Injection-Angriffe zu verhindern, gibt es wesentliche Unterschiede zwischen t

Wie effektiv ist das Escapen von einfachen Anführungszeichen bei der Verhinderung von SQL-Injection?Wie effektiv ist das Escapen von einfachen Anführungszeichen bei der Verhinderung von SQL-Injection?

18Jan2025

Schutz vor SQL-Injection: Einfache Anführungszeichen und umgebende Benutzereingaben umgehen Im Bereich der SQL-Sicherheit ist es von entscheidender Bedeutung, sich vor ... zu schützen.

See all articles