| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
セキュリティとセーフモード
以下に設定ディレクティブに関する 簡単な説明を示します。 セーフモードの設定ディレクティブの簡単な説明を以下に示します。
open_basedir, disable_functions, disable_classes, register_globals, display_errors, log_errorsも参照してください。 セーフモードがonの場合、PHPは、 現在のスクリプトの所有者がファイル関数により処理されているファイルまたはディレクトリ の所有者に一致するかどうかを調べます。例えば、 -rw-rw-r-- 1 rasmus rasmus 33 Jul 1 19:20 script.php -rw-r--r-- 1 root root 1116 May 26 18:01 /etc/passwd
<?php Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2 UID checking. しかし、多くの環境において、厳密なUIDチェックは 適切ではなく、より緩やかなGIDチェックで十分です。 これはsafe_mode_gidスイッチで サポートされます。これをOnにすると制限の緩い GIDチェックに、Off(デフォルト) にするとUIDチェックになります。 safe_modeの代わりに、 open_basedirディレクトリを セットすると、全てのファイル操作は特定のディレクトリ配下のみに制限されます。 例えば(Apacheのhttpd.confの例): <Directory /docroot> php_admin_value open_basedir /docroot </Directory> Warning: open_basedir restriction in effect. File is in wrong directory in /docroot/script.php on line 2 特定の関数を無効にすることもできます。 disable_functionsディレクティブは php.ini以外では使用できないことに注意してください。 つまり、httpd.conf上のバーチャルホスト毎あるいはディレクトリ毎に 関数を無効にすることはできない、ということになります。 もしphp.iniファイルに以下を追加した場合: disable_functions = readfile,system Warning: readfile() has been disabled for security reasons in /docroot/script.php on line 2 警告
もちろん、これらの PHP の制限はバイナリを実行した場合は有効になりません。 |
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「セキュリティとセーフモード」をGoogle検索
|