高セキュリティの PHP Web サイトを作成するためのいくつかの実践的なポイント
PHP が現在最も人気のある Web アプリケーション プログラミング言語であることは誰もが知っています。しかし、他のスクリプト言語と同様に、PHP にもいくつかの危険なセキュリティ ホールがあります。したがって、このチュートリアルでは、一般的な PHP セキュリティ問題を回避するのに役立ついくつかの実践的なヒントを見ていきます。
一般に、多くのプログラマは、開発プロセス中に常にプログラム エラー レポートを作成することを忘れます。エラー報告は、最良のデバッグ ツールであるだけでなく、優れたセキュリティ脆弱性検出ツールでもあり、アプリケーションをオンラインにする前に、発生する可能性のある問題を可能な限り見つけることができます。
もちろん、エラー報告を有効にする方法はたくさんあります。たとえば、php.in 設定ファイルでは、
エラー報告を有効にする
error_reporting(E_ALL);
エラー報告を無効にする
error_reporting(0);
グローバル変数の登録
register_globals を ON に設定すると、環境変数、GET、POST、COOKIE またはサーバー変数がグローバル変数として定義されるように設定するのと同じになります。現時点では、フォーム変数「username」を取得するために $_POST['username'] を記述する必要はありません。この変数を取得するには、「$username」だけが必要です。 では、 register_globals を ON に設定するとこんなに便利なメリットがあるのだから、ぜひ使ってみてはいかがでしょうか?これを行うと多くのセキュリティ上の問題が発生し、ローカル変数名と競合する可能性があるためです。 たとえば、次のコードを見てください:if( !empty( $_POST['username'] ) && $_POST['username'] == ‘test123′ && !empty( $_POST['password'] ) && $_POST['password'] == “pass123″ ){$access = true;}
.htaccess でグローバル変数を無効にする
php_flag register_globals 0
php.ini でグローバル変数を無効にする
register_globals = Off
magic_quotes_gpc、magic_quotes_runtime、magic_quotes_sybase などのマジック クオートを無効にする
.htaccess ファイルで設定php_flag magic_quotes_gpc 0php_flag magic_quotes_runtime 0
magic_quotes_gpc = Offmagic_quotes_runtime = Offmagic_quotes_sybase = Off
$username = mysqli_real_escape_string( $GET['username'] );mysql_query( “SELECT * FROM tbl_employee WHERE username = ’”.$username.“‘”);