Heim  >  Artikel  >  Backend-Entwicklung  >  Einfacher PHP-Anti-Injection-Code

Einfacher PHP-Anti-Injection-Code

怪我咯
怪我咯Original
2017-07-12 15:16:574577Durchsuche

Bei der sogenannten SQL-Injection wird ein SQL-Befehl in ein Webformular eingefügt, um einen Domänennamen oder eine Abfrage für eine Seitenanforderung Zeichenfolge zu übermitteln oder einzugeben, wodurch der Server letztendlich dazu verleitet wird, bösartige SQL-Befehle auszuführen. Konkret geht es um die Möglichkeit, vorhandene Anwendungen zu nutzen, um (bösartige) SQL-Befehle zur Ausführung in die Backend-Datenbank-Engine einzuschleusen. Sie können Informationen über eine Website mit Sicherheitslücken erhalten, indem Sie (bösartige) SQL-Anweisungen in eine Web-Datenbank eingeben als die vom Designer vorgesehene Ausführung von SQL-Anweisungen. Beispielsweise haben viele frühere Film- und Fernsehwebsites Passwörter für VIP-Mitglieder preisgegeben, meist durch die Übermittlung von Abfragezeichen über WEB-Formulare. Solche Formulare sind besonders anfällig für SQL-Injection-Angriffe. In diesem Artikel werden hauptsächlich zwei Methoden verwendet, um die Injektion in PHP zu verhindern. Speichern Sie zunächst den folgenden Code als „safe.php“ im Stammverzeichnis der Website und fügen Sie dann jeweils „include(“/safe.php“) hinzu PHP-Datei. ;Das ist es:

PHP-Anti-Injection-Code-Methode eins:

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

PHP-Anti-Injection-Code-Methode zwei:

/* 过滤所有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; 
}

Das obige ist der detaillierte Inhalt vonEinfacher PHP-Anti-Injection-Code. 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