ホームページ >バックエンド開発 >PHPチュートリアル >php_PHPチュートリアルのsafe_modeセーフモード設定の詳細な説明
php には通常モードとセーフ モードがあります。セーフ モードの設定後は多くの機能が制限されるため、ほとんどのユーザーはアプリケーションの通常モードを使用します。方法。
セーフモードをオンにすると、以下の機能リストの機能が制限されます:
chdir、move_uploaded_file、chgrp、parse_ini_file、chown、rmdir、コピー、名前変更、fopen、require、highlight_file、show_source、include、symlink、link、touch、mkdir、unlink
同様に、PHP 拡張機能の一部の関数も影響を受けます。 (モジュールのロード: dl 機能はセーフ モードでは禁止されます。拡張機能をロードしたい場合は、php.ini で拡張機能のオプションを変更し、PHP の起動時にロードするだけです)
PHP セーフ モードがオンになっている場合、オペレーティング システム プログラムを実行する必要がある場合は、safe_mode_exec_dir オプションで指定されたディレクトリ内のプログラムである必要があります。そうでない場合、実行は失敗します。実行が許可された場合でも、フィルタリングのために自動的にescapeshellcmd関数に渡されます。
コマンドを実行する次の関数のリストが影響を受けます:
exec、shell_exec、パススルー、システム、popen
また、バックタグ演算子(`)もオフになります。
セーフモードで実行した場合、エラーは発生しませんが、putenv関数は無効となります。同様に、PHP 環境変数を変更しようとする set_time_limit や set_include_path などの他の関数も無視されます。
1. すべての入出力関数 (fopen()、file()、require() など) の適用は制限され、これらの関数を呼び出すスクリプトと同じ所有者を持つファイルに対してのみ使用できます。たとえば、セーフ モードが有効になっていると仮定すると、Mary が所有するスクリプトが fopen() を呼び出し、Jonhn が所有するファイルを開こうとすると失敗します。ただし、Mary が fopen() を呼び出すスクリプトだけでなく、fopen() の呼び出し元のファイルも所有している場合は、成功します。
2. 関数 Popen()、system()、または exec() を介してスクリプトを実行しようとする場合、そのスクリプトがsafe_mode_exec_dir 構成ディレクティブで指定されたディレクトリにある場合にのみ可能です。
3. 検証スクリプトのユーザーの UID が検証フィールドに含まれるため、HTTP 検証がさらに強化されます。また、セーフ モードが有効な場合、PHP_AUTH は設定されません。
4. MySQL データベース サーバーを使用する場合、MySQL サーバーへの接続に使用するユーザー名は、mysql_connect() を呼び出すファイル所有者のユーザー名と同じである必要があります。
1) php
PHP のセーフ モードは、system()、
などの PHP の一部の関数を制御できる非常に重要な組み込みセキュリティ メカニズムです。
同時に、多くのファイル操作関数の権限が制御され、/etc/passwd などの特定の重要なファイルは許可されません。
ただし、デフォルトの php.ini はセーフ モードで開かないので、セーフ モードを開いてみましょう:
セーフモード = オン
(2) ユーザーグループのセキュリティ
グループ内のユーザーもファイルにアクセスできます。
次のように設定することをお勧めします:
設定しないと、サーバー Web サイトのディレクトリ内のファイルを操作できなくなる可能性があります。たとえば、
ファイルを操作するとき。
(3) プログラムのホームディレクトリをセーフモードで実行します
safe_mode_exec_dir = D:/usr/bin
通常の状況では、プログラムを実行する必要はないため、システム プログラム ディレクトリを実行しないことをお勧めします。
次に、実行する必要があるプログラムをコピーします。次のようなものです。
ただし、プログラムを実行しないことをお勧めします。その場合は、Web ディレクトリを指定できます:
safe_mode_exec_dir = D:/usr/www
(4) セーフモードでファイルを含める
safe_mode_include_dir = D:/usr/www/include/
実際には、一般的に、PHP スクリプトに含まれるファイルはプログラム自体に記述されており、これは特定のニーズに応じて設定できます。
(5) PHPスクリプトがアクセスできるディレクトリを制御します
アクセスすべきではないファイルにより、phpshell の害はある程度制限され、通常は Web サイトのディレクトリのみにアクセスするように設定できます。
open_basedir = D:/usr/www
セーフモードがオンになっている場合、機能の禁止は必要ありませんが、安全性を考慮しております。たとえば、
phpinfo() やその他の関数を禁止することができます:
disable_functions = system,passthru,exec,shell_exec,popen,phpinfo
ファイルやディレクトリの操作を禁止したい場合は、多くのファイル操作を閉じることができます
disable_functions=chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,
コピー、mkdir、rmdir、名前変更、ファイル、file_get_contents、fputs、fwrite、chgrp、chmod、chown
上記は、一般的に使用されるファイル処理関数の一部を示したものです。
上記の実行コマンド関数を組み合わせることもできます。
ほとんどの phpshell に耐えることができます。
(7) httpヘッダー内のPHPバージョン情報の漏洩を遮断
ハッカーがサーバー内の PHP バージョン情報を取得できないようにするために、http ヘッダーの情報をオフにすることができます:
expose_php = オフ
例えば、ハッカーが www.target.com 80 に Telnet した場合、PHP 情報を見ることはできません。
(8) グローバル変数のクローズ登録
PHP で送信された変数は、POST または GET を使用して送信された変数も含め、グローバル変数として自動的に登録され、直接アクセスできます。
これはサーバーにとって非常に安全ではないため、グローバル変数として登録させることはできません。そのため、グローバル変数の登録オプションをオフにします:
register_globals = オフ
もちろん、これが設定されている場合は、GET によって送信された変数 var を取得するなど、適切な方法を使用して対応する変数を取得する必要があります。
PHP プログラマは、これを取得するために $_GET['var'] を使用する必要があります。
SQL インジェクションは、Web サイトのバックエンドに侵入したり、サーバー全体がダウンしたりする可能性がある非常に危険な問題です。
magic_quotes_gpc = オフ
これはデフォルトではオフになっています。オンにすると、ユーザーが送信した SQL クエリが自動的に変換されます。 たとえば、' を ' に変換するなど、SQL インジェクションの防止に重要な役割を果たします。したがって、次のように設定することをお勧めします:
magic_quotes_gpc = オン
www.bkjia.com