PHP は非常に強力なサーバーサイドスクリプト言語ですが、強力な機能には常に大きな危険が伴います。PHP 自体の古いバージョンには、php4.3.10 および php5.0.3 より前の重大なバグなど、いくつかの問題があります。新しいバージョンを使用することをお勧めします。さらに、現在人気の SQL インジェクションは PHP 上でさまざまな方法で使用できるため、セキュリティを確保するには、PHP コードの記述も 1 つの側面であり、PHP の設定が非常に重要です。このセクションでは、PHP の潜在的に危険な要素を防ぐために PHP.ini ファイルを変更する方法を学習します。
1. php.ini ファイルの選択
有効な PHP 設定ファイル php.ini を設定します。圧縮パッケージには、php.ini-dist と php.ini-recommended という 2 つの ini ファイルが含まれています。このファイルはパフォーマンスとセキュリティのデフォルト設定を最適化するため、php.ini-recommended を使用することをお勧めします。このファイルの指示を注意深く読み、ini 設定の章を読んで各項目を手動で設定します。最良のセキュリティ結果を達成したい場合は、このファイルを使用するのが最適ですが、PHP はデフォルトの ini ファイルでも適切に動作します。選択した ini ファイルを PHP が見つけられるディレクトリにコピーし、名前を php.ini に変更します。 PHP はデフォルトで Windows ディレクトリ内の php.ini を検索します:
選択した ini ファイルを Windows 9x/ME/XP の %WINDIR% (通常は c:windows) にコピーします。
Windows NT/2000 では、選択した ini ファイルを %WINDIR% または %SYSTEMROOT% (通常はサーバーのバージョンに対応する c:winnt または c:winnt40) にコピーします。
Windows NT、2000、または XP で NTFS を使用している場合は、Web サーバーを実行しているユーザー名に php.ini に対する読み取り権限があることを確認してください (例: 誰でも読み取り可能にするなど)。
php.ini -distはプログラム開発に一般的に使用されます。
php.ini - オンラインサービスの使用を推奨します。
2. php.ini ファイルの変更
PHP のセキュリティ モードは、system() などの PHP の一部の関数を制御し、多くのファイル操作関数の権限も制御します。 /etc/passwd などのファイルは許可されますが、デフォルトの php.ini はセーフ モードで開かないため、これを開きます。
1.「safe_mode=off」を見つけて「safe_mode=on」に変更します
システムコマンドを実行できるいくつかの関数shell_exec()と``は禁止されていますが、他の実行関数、例えば:exec()、system()、 passthru()、popen() は、safe_mode_exec_dir で指定されたディレクトリ内のプログラムの実行に制限されます。本当にいくつかのコマンドまたはプログラムを実行したい場合は、以下を見つけてください:
Safe_mode_exec_dir =
次のように、実行するプログラムのパスを指定します:
safe_mode_exec_dir = c:wwwroot
次に、使用するプログラムを c にコピーします。 :wwwroot ディレクトリ、このように、上記のような制限された関数もディレクトリ内のプログラムを実行できます
2. "display_errors=on" を見つけて、それを "display_errors=off" に変更します
通常、そうでない場合、PHP はエラーを表示します通常、エラー メッセージには PHP スクリプトまたはクエリの SQL ステートメントの現在のパス情報が含まれるため、この種の情報はハッカーに提供されると安全ではないため、通常はエラー メッセージを表示することをお勧めします。プロンプトはサーバー上で無効になります。
display_errors = Off
log_errors = On
同時に、エラーログが保存されるディレクトリを設定します
;error_log = filename
前のコメントを削除し、ファイル名を指定したファイルに変更します
error_log = D。 :/usr/php_error.log
3. 「disable_functions=」を見つけて、「disable_functions=phpinfo,system,exec,passthru,shell_exec,popen,is_dir」に変更します
php 関数を実行したくないと感じます。 system() などのコマンドを実行できるもの、または phpinfo() などの php 情報を表示できる関数がある場合は、それらを無効にできます:
4. Search: magic_quotes_gpc Off になっている場合は、On に変更します
オンにしますSQL インジェクションを防ぐための magic_quotes_gpc。
5. Find: register_globals
POST または GET を使用して送信された変数を含む、PHP で送信された変数は、グローバル変数として自動的に登録され、直接アクセスできます。これはサーバーにとって非常に安全ではないため、登録させることはできません。グローバル変数です。グローバル変数の登録オプションをオフにします:
6. 検索: open_basedir を追加し、/www/ /*注: www は Web サイト プログラムによって配置されたファイルです*/
このオプションは、指定された以外のファイル操作を禁止できますまた、ローカル ファイルや include() などの関数によって呼び出されるリモート ファイルに対する攻撃を効果的に排除できます。
7. phpがhttpファイルヘッダーの情報を漏洩しないように、expose_phpをoffに設定します。
ハッカーがサーバー内の PHP バージョン情報を取得するのを防ぐために、http ヘッダー内の情報をオフにすることができます。
8.「allow_url_fopen」を「off」に設定すると、リモートファイル機能を無効にすることができます。