La soi-disant injection SQL consiste à insérer une commande SQL dans un formulaire Web pour soumettre ou saisir un nom de domaine ou une requête pour une demande de page chaîne , incitant finalement le serveur à exécuter des commandes SQL malveillantes. Plus précisément, il s'agit de la possibilité d'utiliser des applications existantes pour injecter des commandes SQL (malveillantes) dans le moteur de base de données principal en vue de leur exécution. Il peut obtenir des informations sur un site Web présentant des vulnérabilités de sécurité en saisissant des instructions SQL (malveillantes) dans un formulaire Web. que d'exécuter des instructions SQL comme prévu par le concepteur. Par exemple, de nombreux sites Web de cinéma et de télévision ont divulgué les mots de passe des membres VIP, principalement en soumettant des caractères de requête via des formulaires WEB. Ces formulaires sont particulièrement vulnérables aux attaques par injection SQL. Cet article utilise principalement deux méthodes pour empêcher l'injection en PHP. Tout d'abord, veuillez enregistrer le code suivant sous safe.php dans le répertoire racine du site Web, puis ajoutez include("/safe.php") devant chacune. Fichier PHP. ;C'est tout :
méthode du code anti-injection php 1 :
<?php //要过滤的非法字符 $ArrFiltrate=array(”‘”,”;”,”union”); //出错后要跳转的url,不填则默认前一页 $StrGoUrl=””; //是否存在数组中的值 function FunStringExist($StrFiltrate,$ArrFiltrate){ foreach ($ArrFiltrate as $key=>$value){ if (eregi($value,$StrFiltrate)){ return true; } } return false; } //合并$_POST 和 $_GET if(function_exists(array_merge)){ $ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS); }else{ foreach($HTTP_POST_VARS as $key=>$value){ $ArrPostAndGet[]=$value; } foreach($HTTP_GET_VARS as $key=>$value){ $ArrPostAndGet[]=$value; } } //验证开始 foreach($ArrPostAndGet as $key=>$value){ if (FunStringExist($value,$ArrFiltrate)){ echo “<script language=\”javascript\”>alert(\”非法字符\”);</script>”; if (emptyempty($StrGoUrl)){ echo “<script language=\”javascript\”>history.go(-1);</script>”; }else{ echo “<script language=\”javascript\”>window.location=\””.$StrGoUrl.”\”;</script>”; } exit; } } ?>
méthode du code anti-injection php deux :
/* 过滤所有GET过来变量 */ foreach ($_GET as $get_key=>$get_var) { if (is_numeric($get_var)) { $get[strtolower($get_key)] = get_int($get_var); } else { $get[strtolower($get_key)] = get_str($get_var); } } /* 过滤所有POST过来的变量 */ foreach ($_POST as $post_key=>$post_var) { if (is_numeric($post_var)) { $post[strtolower($post_key)] = get_int($post_var); } else { $post[strtolower($post_key)] = get_str($post_var); } } /* 过滤函数 */ //整型过滤函数 function get_int($number) { return intval($number); } //字符串型过滤函数 function get_str($string) { if (!get_magic_quotes_gpc()) { return addslashes($string); } return $string; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!