実践的な PHP アンチインジェクション コード例の詳細な説明

伊谢尔伦
リリース: 2023-03-12 06:04:01
オリジナル
1458 人が閲覧しました

この記事では、主にシンプルで実用的な PHP アンチインジェクション クラスの例を紹介し、PHP アンチインジェクションの原理とテクニックを紹介します。これは、Web サイトのセキュリティ構築に非常に役立ちます。必要な人は参照してください

この記事の例では、シンプルで実用的な PHP アンチインジェクション クラスについて説明します。皆さんの参考に共有してください。詳細は次のとおりです:

PHP アンチインジェクション。フィルタリングされる情報は基本的に get、post であり、SQL はよく使用されるクエリ、挿入などの SQL コマンドであることに注意してください。以下に 2 つの簡単な例を示します。これらの例があなたの Web サイトにセキュリティをもたらすことを願っています。

PHP アンチインジェクション コードは次のとおりです:

<?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; 
    } 
} 
?>
ログイン後にコピー


例 2、コードは次のとおりです:

<?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注入*****************/     
?>
ログイン後にコピー


以上が実践的な PHP アンチインジェクション コード例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!