いわゆる SQL インジェクションとは、Web フォームに SQL コマンドを挿入して、ページ リクエスト string のドメイン名またはクエリ文字列を送信または入力し、最終的にサーバーをだまして悪意のある SQL コマンドを実行させることです。具体的には、既存のアプリケーションを使用して、(悪意のある) SQL コマンドをバックエンド データベース エンジンに挿入して実行する機能であり、Web フォームに (悪意のある) SQL ステートメントを入力することで、セキュリティ上の脆弱性のある Web サイト上の情報を取得できます。設計者が意図したとおりに SQL ステートメントを実行するよりも、 たとえば、以前の多くの映画やテレビの Web サイトでは、主に WEB フォームを通じてクエリ文字を送信することによって VIP メンバーシップのパスワードが漏洩していました。このようなフォームは SQL インジェクション攻撃に対して特に脆弱です。この記事では主に、PHP でのインジェクションを防ぐ 2 つの方法に焦点を当てます。まず、次のコードを Web サイトのルート ディレクトリに「safe.php」という名前で保存し、各 PHP ファイルの前に include("/safe.php") を追加します。 ; つまり、利用可能:
php アンチインジェクション コード メソッド 1:
<?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 アンチインジェクション コード メソッド 2:
/* 过滤所有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; }
以上がシンプルなPHPアンチインジェクションコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。