ホームページ  >  記事  >  php教程  >  PHP Web サイトの全体的なアンチインジェクション方法

PHP Web サイトの全体的なアンチインジェクション方法

WBOY
WBOYオリジナル
2016-06-21 09:05:351024ブラウズ

抗注射

今日コードを書いていたときに、Web サイト全体で考えられるすべてのインジェクション場所を 1 つのファイルで処理して防ぐことはできないのではないかと突然思いました。これにより、各プログラムで各変数をフィルタリングする必要がなくなり、時間とコードが節約されます。

主に 2 つのポイントから開始します。取得する変数は通常 GET または POST を通じて送信されるため、インジェクションを防ぐには GET と POST からの変数をフィルターするだけで済みます。そして、私たちの PHP は非常に優れており、$_GET と $_POST という 2 つの組み込み配列があり、各変数をフィルターするだけで済みます。

以下の具体的なコードを見てください:

/* 著者: heiyeluren */
/* すべての GET 変数をフィルタリング*/
foreach ($_GET as $get_key=>$get_var)
{
if ( is_numeric($get_var))
if (is_numeric($get_var)) {
$get[strto lower($get_key)] = get_int($get_var);
} else {
$get[strto lower($get_key)] = get_str( $get_var);
}
}

/* すべての POST 変数をフィルタリング*/
foreach ($_POST as $post_key=>$post_var)
{
if (is_numeric($post_var)) {
$ post[ strto lower($post_key)] = get_int($post_var);
} else {
$post[strto lower($post_key)] = get_str($post_var);
}
}

/* フィルター関数*/
/ /整数フィルター関数
function get_int($number)
{
Return intval($number);
}
//文字列フィルター関数
function get_str($string)
{
if (!get_magic_quotes_gpc() ) {
return addlashes ($string);
}
return $string;
}

次に、上記のコードを security.inc.php などの公開ファイルに配置し、各ファイルにインクルードします。このファイルをクリックすると、任意のプログラムによって送信されたすべての変数をフィルタリングできるため、これまでと同様の効果が得られます。

さらに、私が以前使用したキーワードフィルタリング方法など、他のフィルタリング方法もあります: http://dev.csdn.net/article/71/71475.shtm
Sanchihan Bing の方法も参照できます。 : http://www.fanghei.com/html/2005-06/20050607114008.htm

方法は異なりますが、中心となるのはコードをより安全にすることです。

作成者: heiyeluren
日付: 2005-7-20




声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。