![](/static/imghwm/top_right.png)
![](/static/imghwm/top_right.png)
![](/static/imghwm/top_right.png)
<?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
![Pourquoi l'échappement de chaîne est-il crucial pour empêcher l'injection SQL et les erreurs de données ?](https://img.php.cn/upload/article/001/246/273/173561617171766.jpg)
31Dec2024
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](https://img.php.cn/upload/article/000/000/194/4b4eeb851d7a662c19346bcc17060a44.jpg)
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.
![Classe de filtre ASP.NET SqlFilter pour empêcher l'injection SQL](https://img.php.cn/upload/article/000/000/013/ef376176c992370780866b2fdc4b7ded.jpg)
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.
![Comment utiliser en toute sécurité l'extension MySQL en PHP pour empêcher l'injection SQL ?](https://img.php.cn/upload/article/001/246/273/173463138927632.jpg)
20Dec2024
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 ?](https://img.php.cn/upload/article/001/246/273/173762617025837.jpg)
23Jan2025
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 ?](https://img.php.cn/upload/article/001/246/273/173354569367183.jpg)
07Dec2024
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...
![](/static/imghwm/down_right.png)
![](/static/imghwm/taglogo.png)
Hot Tools
![Bibliothèque PHP pour les conteneurs d'injection de dépendances](https://img.php.cn/upload/manual/000/000/001/5e21721e79a2b232.png)
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](/static/imghwm/default1.png)
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](/static/imghwm/default1.png)
Petite bibliothèque PHP pour optimiser les images
Petite bibliothèque PHP pour optimiser les images
![](/static/imghwm/taglogo.png)