Maison Bibliothèques PHP Autres bibliothèques Bibliothèque de classes PHP pour empêcher l'injection SQL
Bibliothèque de classes PHP pour empêcher l'injection SQL
<?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);
  }
}

Cette bibliothèque de classes construit d'abord les paramètres de la fonction, puis vérifie et écrit le journal, et enfin vérifie le journal d'injection SQL. C'est une bibliothèque de classes PHP très utile pour empêcher l'injection SQL


Clause de non-responsabilité

Toutes les ressources de ce site proviennent d'internautes ou sont réimprimées par les principaux sites de téléchargement. Veuillez vérifier vous-même l'intégrité du logiciel ! Toutes les ressources de ce site sont uniquement à titre de référence d'apprentissage. Merci de ne pas les utiliser à des fins commerciales. Sinon, vous serez responsable de toutes les conséquences ! En cas d'infraction, veuillez nous contacter pour la supprimer. Coordonnées : admin@php.cn

Article connexe

Pourquoi l'échappement de chaîne est-il crucial pour empêcher l'injection SQL et les erreurs de données ? Pourquoi l'échappement de chaîne est-il crucial pour empêcher l'injection SQL et les erreurs de données ?

31 Dec 2024

Qu'est-ce que l'échappement de chaîne et pourquoi est-ce crucial ? L'échappement de chaîne est une technique utilisée pour clarifier l'utilisation prévue des guillemets et autres...

Mécanisme de PDO pour empêcher l'injection SQL Mécanisme de PDO pour empêcher l'injection SQL

25 Feb 2017

Le code ci-dessus peut empêcher l'injection SQL. Pourquoi? Lorsque prepare() est appelé, l'instruction de requête a été envoyée au serveur de base de données. À ce stade, seul l'espace réservé ? est envoyé et aucune donnée soumise par l'utilisateur n'est envoyée lorsque execute() est appelée. l'utilisateur sera envoyé vers la base de données, ils sont transmis séparément, les deux sont indépendants et l'attaquant SQL n'a aucune chance.

Classe de filtre ASP.NET SqlFilter pour empêcher l'injection SQL Classe de filtre ASP.NET SqlFilter pour empêcher l'injection SQL

21 Jan 2017

Cet article partage une classe de filtrage SqlFilter qui empêche l'injection SQL, ce qui peut empêcher l'injection via POST, GET et Cookies.

Comment utiliser en toute sécurité l'extension MySQL en PHP pour empêcher l'injection SQL ? Comment utiliser en toute sécurité l'extension MySQL en PHP pour empêcher l'injection SQL ?

20 Dec 2024

Comment créer des requêtes de base de données sécurisées avec l'extension MySQLL'extension MySQL offre une approche rudimentaire mais fonctionnelle des interactions avec les bases de données...

Les instructions préparées peuvent-elles gérer les noms de tables paramétrés pour empêcher l'injection SQL ? Les instructions préparées peuvent-elles gérer les noms de tables paramétrés pour empêcher l'injection SQL ?

23 Jan 2025

Liaison des noms de table dans les instructions préparéesQuestion :Est-il possible de paramétrer le nom de la table dans une instruction SQL préparée, ce qui gêne SQL...

PHP MySQLi : dois-je échapper à TOUTES les variables avec `mysqli_real_escape_string` pour empêcher l'injection SQL ? PHP MySQLi : dois-je échapper à TOUTES les variables avec `mysqli_real_escape_string` pour empêcher l'injection SQL ?

07 Dec 2024

PHP MySQLI : Prévenir l'injection SQLLors du développement d'applications Web, la protection contre les attaques par injection SQL est cruciale. Utiliser le...

See all articles