今回の記事の内容は、PHP環境のセキュリティをさらに強化する方法についてです。 PHP 環境のセキュリティを強化する方法の紹介は一定の参考になりますので、困っている方は参考にしていただければ幸いです。
PHP アプリケーションの導入後、開発者や運用保守担当者は常に PHP の脆弱性ニュースに注意し、PHP のバージョンアップや PHP 環境のセキュリティ強化を行う必要があります。この記事では、WEBセキュリティの観点からWebサイトをより強く、より安全にする方法をご紹介します。
1. PHP のセーフ モードを有効にする
PHP 環境によって提供されるセーフ モードは、非常に重要な組み込みのセキュリティ メカニズムです。PHP セーフ モードは、PHP 環境の一部の機能を効果的に制御できます ( system () 関数など) は、ほとんどのファイル操作関数のアクセス許可を制御し、特定のキー ファイル (/etc/passwd など) の変更を許可しません。ただし、デフォルトの php.ini 構成ファイルではセーフ モードが有効になりません。
php.ini 構成ファイルを変更することで、PHP セーフ モードを有効にできます:
safe_mode = on
2. ユーザー グループのセキュリティ
セーフ モードを有効にする場合、safe_mode_gid オプションがオフにすると、PHP スクリプトがファイルにアクセスできるようになり、同じユーザー グループ内のユーザーもファイルにアクセスできるようになります。
したがって、このオプションをオフに設定することをお勧めします:
safe_mode_gid = off
注: このオプション パラメーターは、Linux オペレーティング システムにのみ適用されます。
この設定を行わないと、サーバー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 スクリプトが指定されたディレクトリにのみアクセスできるように制御します。これにより、PHP スクリプトがアクセスすべきではないファイルにアクセスするのを防ぐことができます。 phpshell の害をある程度軽減しました。通常の場合は、Web サイトのディレクトリのみにアクセスするように設定できます:
open_basedir = /usr/www
6. 危険な機能をオフにする
セーフ モードを有効にしている場合は、機能禁止の設定を行う必要はありません。ただし、セキュリティ上の理由から、適切な設定を行うことをお勧めします。例えば、system()などのコマンドを実行するPHP関数や、phpinfo()などのPHP情報を参照できる関数を実行したくない場合は、以下の設定でこれらの関数を禁止することができます。
If ファイルやディレクトリに対する操作を禁止したい場合は、次のファイル関連の操作を無効にすることができます。disable_functions = system, passthru, exec, shell_exec, popen, phpinfo, escapeshellarg, escapeshellcmd, proc_close, proc_open, dl
Note: 上記の設定は、より一般的に使用されるファイル処理関数の一部を示しているだけです。また、上記の実行コマンド関数とこれらのファイル処理関数を組み合わせて、ほとんどの phpshell の脅威に対抗することもできます。
7. HTTP ヘッダーでの PHP バージョン情報の漏洩をオフにするハッカーがサーバー内の PHP バージョン情報を取得するのを防ぐために、HTTP ヘッダーでのこの情報の漏洩を禁止できます。 header content:disable_functions = chdir, chroot, dir, getcwd, opendir, readdir, scandir, fopen, unlink, delete, copy, mkdir, rmdir, rename, file, file_get_contents, fputs, fwrite, chgrp,chmod, chownこれを設定すると、ハッカーが Telnet 9e6c6f86673efa96e9f4645ec38e5f75 80 を実行してサーバーに接続しようとしたときに、PHP のバージョン情報を確認できなくなります。 8. グローバル変数の登録をオフにするPHP 環境で送信された変数 (POST または GET コマンドを使用して送信された変数を含む) は、グローバル変数として自動的に登録され、直接アクセスできるようになります。これはサーバーにとって非常に安全ではないため、グローバル変数を登録するオプションをオフにし、送信された変数をグローバル変数として登録することを禁止することをお勧めします。
expose_php = off
注: このオプション パラメーターは、PHP 5.3 以降のバージョンでは削除されました。
もちろん、これが設定されている場合は、対応する変数を取得するために合理的な方法を使用する必要があります。例えば、GETコマンドで送信した変数varを取得するには、$_GET['var']コマンドを使用して取得する必要があるため、PHPプログラムを設計する際には注意が必要です。
magic_quotes_gpc オプションはデフォルトではオフになっています。このオプションをオンにすると、PHP はユーザーが送信した SQL クエリのリクエストを自動的に変換します (たとえば、' を \' に変換するなど)。これは SQL インジェクション攻撃の防止に非常に効果的です。そのため、これを設定することをお勧めします。オプション:
register_globals = off
Note: このオプション パラメーターは、PHP 5.4.0 以降のバージョンでは削除されました。
したがって、SQL クエリを処理するには PDO 前処理を使用するのが最善です。10.错误信息控制
一般 PHP 环境在没有连接到数据库或者其他情况下会有错误提示信息,错误信息中可能包含 PHP 脚本当前的路径信息或者查询的 SQL 语句等信息,这类信息如果暴露给黑客是不安全的,因此建议您禁止该错误提示:
display_errors = Off
如果您确实要显示错误信息,一定要设置显示错误信息的级别。例如,只显示警告以上的错误信息:
error_reporting = E_WARNING & E_ERROR
注意: 强烈建议您关闭错误提示信息。
11.错误日志
建议您在关闭错误提示信息后,对于错误信息进行记录,便于排查服务器运行异常的原因:
log_errors = On
同时,需要设置错误日志存放的目录,建议您将 PHP 错误日志与 Apache 的日志存放在同一目录下:
error_log = /usr/local/apache2/logs/php_error.log
注意: 该文件必须设置允许 Apache 用户或用户组具有写的权限。
相关推荐:
以上がPHP環境のセキュリティをさらに強化するにはどうすればよいでしょうか? PHP環境のセキュリティを強化する方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。