<?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
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
25Feb2017
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.
14Mar2018
Cet article présente principalement la méthode simple pour empêcher l'injection SQL en PHP. Il analyse les techniques de fonctionnement courantes et les précautions en PHP pour empêcher l'injection SQL sous forme d'exemples. Le code est entièrement commenté pour une compréhension facile. Les amis dans le besoin peuvent s'y référer. .
02Jun2018
Cet article présente principalement la méthode simple pour empêcher l'injection SQL en PHP. Il analyse les techniques de fonctionnement courantes et les précautions en PHP pour empêcher l'injection SQL sous forme d'exemples. Le code est entièrement commenté pour une compréhension facile. Les amis dans le besoin peuvent s'y référer. .
23Jun2023
L'injection SQL est une méthode d'attaque courante qui contourne la vérification de sécurité d'une application en injectant une entrée malveillante dans la requête SQL d'un attaquant. Ce type d'attaque est couramment observé dans les applications Web, où PHP est un langage de programmation largement utilisé. En PHP, les programmeurs d'applications peuvent utiliser les techniques suivantes pour empêcher l'injection SQL. Utilisation des instructions préparées PHP fournit une technologie appelée instructions préparées, qui constitue un moyen sûr d'empêcher l'injection SQL. Une instruction préparée est une méthode permettant de convertir les mots de requête en requête SQL avant de l'exécuter.
25Apr2017
Cet article présente principalement la méthode de prévention de l'injection SQL dans ASP.NET et analyse les compétences opérationnelles pertinentes d'asp.net basées sur le filtrage de chaînes pour empêcher l'injection SQL sur la base d'exemples spécifiques. Les amis dans le besoin peuvent se référer à ce qui suit.
21Jan2017
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.
Hot Tools
Bibliothèque PHP pour les conteneurs d'injection de dépendances
Bibliothèque PHP pour les conteneurs d'injection de dépendances
Une collection de 50 excellents algorithmes PHP classiques
Algorithme PHP classique, apprenez d'excellentes idées et élargissez votre réflexion
Petite bibliothèque PHP pour optimiser les images
Petite bibliothèque PHP pour optimiser les images