ホームページ >バックエンド開発 >PHPチュートリアル >php.ini_PHP チュートリアルのいくつかの一般的なセキュリティ構成方法
この記事では、php.ini で一般的なセキュリティ構成を行う方法を簡単に紹介します。必要な学生は参照してください。
(1) phpのセーフモードをオンにする
php のセーフ モードは、php の一部の関数 (system() など) を制御することができ、また、/ などの特定のキーワード ファイルを許可しません。 etc/passwd ですが、デフォルトの php.ini ではセーフ モードが開かないので、セーフ モードを開いてみましょう:
セーフモード = オン
(2) ユーザーグループのセキュリティ
safe_mode がオンで、safe_mode_gid がオフの場合、php スクリプトはファイルにアクセスでき、同じグループ内のユーザーもファイルにアクセスできます。また、同じグループ内のユーザーもファイルにアクセスできます。
推奨設定:
safe_mode_gid = オフ
設定を行わないと、ファイル操作が必要な場合など、サーバーWebサイトのディレクトリ内のファイル操作ができなくなる可能性があります。
(3) プログラムのホームディレクトリをセーフモードで実行します
セーフ モードがオンになっているが、特定のプログラムを実行したい場合は、実行するプログラムのホーム ディレクトリを指定できます:
safe_mode_exec_dir = /usr/bin
通常の状況では、プログラムを実行する必要はないため、システム プログラム ディレクトリを実行しないことをお勧めします。次に、次のような、実行する必要があるプログラムをコピーします。
safe_mode_exec_dir = /temp/cmdただし、プログラムを実行しないことをお勧めします。その場合は、Web ディレクトリを指定してください:
safe_mode_exec_dir = /usr/www
(4) セーフモードでファイルを含める
一部のパブリック ファイルをセーフ モードに含める場合は、オプションを変更します:
safe_mode_include_dir = /usr/www/include/
実際、通常、php スクリプトに含まれるファイルはプログラム自体に記述されており、特定のニーズに応じて設定できます。
(5) PHPスクリプトがアクセスできるディレクトリを制御する
open_basedir オプションを使用すると、指定されたディレクトリにのみアクセスするように PHP スクリプトを制御できます。これにより、特定のプログラムが phpshell の害を示すように、Web サイトにのみアクセスするように設定できます。ディレクトリ:
open_basedir = /usr/www
(6)危険な機能をオフにする
セーフモードがオンになっている場合、機能の禁止は必要ありませんが、安全性を考慮しております。たとえば、system() などの明確に実行される PHP 関数や、PHP 情報を表示できる phpinfo() などの関数を実行したくない場合は、それらを禁止できます。
disable_functions = システム、パススルー、exec、shell_exec、popen、phpinfo、escapeshellarg、escapeshellcmd、proc_close、proc_open、dl
ファイルやディレクトリの操作を禁止したい場合は、多くのファイル操作を閉じることができます
disable_functions = chdir、chroot、dir、getcwd、opendir、readdir、scandir、fopen、リンク解除、削除、コピー、mkdir、rmdir、名前変更、ファイル、file_get_contents、fputs、fwrite、chgrp、chmod、chown
上記は、より一般的に使用されるファイル処理関数の一部を示しているだけです。また、上記の実行コマンド関数とこの関数を組み合わせて、ほとんどの phpshell に対抗することもできます。
(7) httpヘッダー内のphpバージョン情報の漏洩を遮断する
ハッカーがサーバー内の PHP バージョン情報を取得するのを防ぐために、http ヘッダーでこの情報の漏洩をオフにすることができます:
expose_php = オフ
たとえば、ハッカーが www.girlcoding.com:80 に Telnet した場合、PHP 情報を見ることはできません
(8) 登録したグローバル変数を閉じる
PHP で送信された変数 (POST または GET を使用して送信された変数を含む) は、グローバル変数として自動的に登録され、直接アクセスできます。これはサーバーにとって非常に安全ではないため、グローバル変数として登録させることはできません。グローバルに登録するだけです。変数オプションがオフです:
register_globals = オフ
もちろん、これが設定されている場合は、対応する変数を取得するために合理的な方法を使用する必要があります。たとえば、GET によって送信された変数 var を取得するには、PHP プログラマが $_GET['var'] を使用する必要があります。これに注意する必要があります。
(9) SQL インジェクションを防ぐために、magic_quotes_gpc をオンにします
SQL インジェクションは、Web サイトのバックエンドに侵入したり、サーバー全体がダウンしたりする可能性がある非常に危険な問題ですので、注意してください。 php.ini に次の設定があります:
magic_quotes_gpc = オフ
これはデフォルトではオフになっています。オンにすると、「へ」の変換など、ユーザーが送信した SQL クエリを自動的に変換します。これは SQL インジェクションを防ぐのに非常に効果的です。 :
magic_quotes_gpc = オフ
ローカルアップロード時にプログラムが動作しない時がありましたが、サーバー上では正常に動作しました〜 discuzのコアファイルを引き継いでいることも原因かもしれません、パスの取得に問題がありました。このパラメータで問題は解決されました。
(10) エラーメッセージ制御
通常、PHP はデータベースに接続されていない場合、またはその他の状況下でエラー メッセージを表示します。一般に、エラー メッセージには、PHP スクリプトの現在のパス情報またはクエリの SQL ステートメントが含まれます。ハッカーに提供された後は安全ではないため、通常はサーバーでエラー プロンプトを無効にすることが推奨されます。
display_errors = オフ
本当にエラー情報を表示したい場合は、警告の上の情報のみを表示するなど、エラー表示のレベルを必ず設定してください:
error_reporting = E_WARNING & E_ERROR
もちろん、エラープロンプトをオフにすることをお勧めします。
(11) エラーログ
サーバー操作の理由を見つけやすくするために、display_errors を閉じた後にエラー メッセージを記録することをお勧めします。
log_errors = オン同時に、エラー ログを保存するディレクトリも設定する必要があります。ルート Apache ログも一緒に保存することをお勧めします。
error_log = /usr/local/apache2/logs/php_error.log
注: ファイルでは、Apache ユーザーまたはグループに書き込み権限を与える必要があります。
http://www.bkjia.com/PHPjc/629662.html