Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung praktischer PHP-Anti-Injection-Codebeispiele

Detaillierte Erläuterung praktischer PHP-Anti-Injection-Codebeispiele

伊谢尔伦
伊谢尔伦Original
2017-06-29 13:15:321494Durchsuche

In diesem Artikel werden hauptsächlich einfache und praktische Beispiele für PHP-Anti-Injection-Klassen vorgestellt. Er verwendet zwei einfache Anti-Injection-Klassen als Beispiele, um die Prinzipien und Techniken der PHP-Anti-Injection vorzustellen und Bedürfnisse Freunde können darauf verweisen

Dieser Artikel beschreibt eine einfache und praktische PHP-Anti-Injection-Klasse mit Beispielen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Die zu filternden PHP-Anti-Injection-Informationen sind im Grunde Get, Post, und für SQL haben wir häufig verwendete SQL-Befehle wie Abfrage, Einfügen usw. Ich werde Ihnen zwei einfache geben Beispiele unten. Ich hoffe, diese Beispiele können Ihrer Website Sicherheit verleihen.

Der PHP-Anti-Injection-Code lautet wie folgt:

<?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; 
    } 
} 
?>


Beispiel 2, der Code lautet wie folgt :

<?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注入*****************/     
?>


Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung praktischer PHP-Anti-Injection-Codebeispiele. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn