Maison > développement back-end > tutoriel php > Explication détaillée d'exemples pratiques de code anti-injection PHP

Explication détaillée d'exemples pratiques de code anti-injection PHP

伊谢尔伦
Libérer: 2023-03-12 06:04:01
original
1515 Les gens l'ont consulté

Cet article présente principalement des exemples simples et pratiques de classes anti-injection PHP. Il utilise deux classes anti-injection simples comme exemples pour présenter les principes et techniques d'anti-injection PHP. Il est d'une grande valeur pratique pour la construction de la sécurité des sites Web. et besoins Les amis peuvent se référer à

Cet article décrit une classe anti-injection PHP simple et pratique avec des exemples. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :

Les informations anti-injection PHP à filtrer sont essentiellement get, post et pour SQL, nos commandes SQL couramment utilisées telles que query, insert, etc. Je vais vous donner deux exemples simples ci-dessous. J'espère que ces exemples pourront apporter de la sécurité à votre site web.

Le code PHP anti-injection est le suivant :

<?php 
/** 
 * 参数处理类 
 */ 
class Params 
{ 
    public $get = array(); 
 
    public $post = array(); 
 
    function construct() 
    { 
 if (!emptyempty($_GET)) { 
     
foreach
 ($_GET as $key => $val) { 
 if (is_numeric($val)) { 
     $this->get[$key] = $this->getInt($val); 
 } else { 
     $this->get[$key] = $this->getStr($val); 
 } 
     } 
 } 
 if (!emptyempty($_POST)) { 
     foreach ($_POST as $key => $val) { 
 if (is_numeric($val)) { 
     $this->post[$key] = $this->getInt($val); 
 } else { 
     $this->post[$key] = $this->getStr($val); 
 } 
     } 
 } 
    } 
 
    public function getInt($number) 
    { 
 return intval($number); 
    } 
 
    public function getStr($string) 
    { 
 if (!
get_magic_quotes_gpc
()) { 
     $string = 
addslashes
($string); 
 } 
 return $string; 
    } 
 
    public function checkInject($string) 
    { 
 return eregi(&#39;select|insert|update|delete|/*|*|../|./|union|into|load_file|outfile&#39;, $string); 
    } 
 
    public function verifyId($id = null) 
    { 
 if (!$id || $this->checkInject($id) || !is_numeric($id)) { 
     $id = false; 
 } else { 
     $id = intval($id); 
 }
 return $id; 
    } 
} 
?>
Copier après la connexion


Exemple 2, le code est le suivant :

<?php  
/*************************   
说明:     
判断传递的
变量
中是否含有非法字符     
    
如$_POST、$_GET     
功能:     
防注入     
*************************/     
//要过滤的非法字符      
$ArrFiltrate=array("&#39;","or","and","union","where");      
//出错后要跳转的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=&#39;
javascript
&#39;>alert(&#39;传递的信息中不得包含{&#39;,or,and,union}等非法字符请您把他们换成{‘,OR,AND,UNION}&#39;);</script>";      
if (emptyempty($StrGoUrl)){      
echo "<scriptlanguage=&#39;javascript&#39;>history.go(-1);</script>";      
}else{      
echo "<scriptlanguage=&#39;javascript&#39;>window.location=&#39;".$StrGoUrl."&#39;;</script>";      
}      
exit;      
}      
}      
/***************结束防止PHP注入*****************/     
?>
Copier après la connexion


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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal