ホームページ  >  記事  >  バックエンド開発  >  SQL インジェクションのための PHP Web ページ防止メソッドの構成_PHP チュートリアル

SQL インジェクションのための PHP Web ページ防止メソッドの構成_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:10:531153ブラウズ

前提条件として、サーバー上で管理者権限が必要です。つまり、php.ini ファイルを変更できる必要があります。ここでは、SQL インジェクションを防ぐために php 設定ファイルを変更する方法を紹介します。それを参照してください。

セキュリティ上の理由から、「php.ini」ファイルのセーフ モードをオンにして「safe_mode=On」を設定できます。PHP 実行エラー情報を表示する「display_erros」オプションがオンになっている場合、悪用可能な情報が大量に表示されます。したがって、このように「display_erros=off」に設定すると、PHP関数実行エラー後の情報がクライアントのブラウザに表示されなくなります。

さらに、ファイルには非常に重要な設定オプションがあります。「magic_quotes_gpc」項目が「オン」に設定されている場合、PHP プログラムはユーザーが送信した変数を「'」、「」、を含むように自動的に変更します。 "" バックスラッシュを含むエスケープ文字に自動的に変換します。このオプションは ASP プログラムのパラメーター フィルターに似ており、ほとんどの文字インジェクション攻撃を防ぐことができます。

サーバー管理権限を持っていない場合、このプログラムは非常に優れています

コードは次のとおりですコードをコピー
クラス sqlsafe {
private $getfilter = "'|(and|or)b.+?(>|<|=|in|like)|/*.+?*/| private $postfilter = "b(and|or)b.{1,6}?(=|>|<|binb|blikeb)|/*.+?*/| private $cookiefilter = "b(and|or)b.{1,6}?(=|>|<|binb|blikeb)|/*.+?*/| /**
* コンストラクター
​*/
パブリック関数 __construct() {
foreach($_GET as $key=>$value){$this->stop攻撃($key,$value,$this->getfilter);}
foreach($_POST as $key=>$value){$this->stop Attack($key,$value,$this->postfilter);}
foreach($_COOKIE as $key=>$value){$this->stop攻撃($key,$value,$this->cookiefilter);}
}
/**
*パラメータチェックとログ書き込み
​*/
パブリック関数 stop Attack($StrFiltKey, $StrFiltValue, $ArrFiltReq){
if(is_array($StrFiltValue))$StrFiltValue = implode($StrFiltValue);
if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue) == 1){
$this->writeslog($_SERVER["REMOTE_ADDR"]." ".strftime("%Y-%m-%d %H:%M:%S")." ".$_SERVER["PHP_SELF"] ." ".$_SERVER["REQUEST_METHOD"]." ".$StrFiltKey." ".$StrFiltValue);
Showmsg('送信したパラメータは不正です。システムはあなたの操作を記録しました!','',0,1);
}
}
/**
*SQLインジェクションログ
​*/
パブリック関数 writeslog($log){
$log_path = CACHE_PATH.'logs'.DIRECTORY_SEPARATOR.'sql_log.txt';
$ts = fopen($log_path,"a+");
fputs($ts,$log."rn");
fclose($ts);
}
}
?>

http://www.bkjia.com/PHPjc/629633.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/629633.html技術記事前提条件として、サーバーに対する管理者権限が必要です。つまり、php.ini ファイルを変更できる必要があります。次に、SQL インジェクションを防ぐために php 設定ファイルを変更する方法を紹介します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。