web-dev-qa-db-ja.com

特定のディレクトリのサーバーで機能を無効にするにはどうすればよいですか?

サーバーのセキュリティを向上させるために、サーバーの一部の機能を無効にしたい。私はこれらの手順に従いました:

ステップ:1開くphp.iniファイル:vi /etc/php.ini

ステップ:2検索disable_functionsそして次のように新しいリストを設定します:disable_functions = exec、passthru、Shell_exec、system

ステップ:サービスhttpdの再起動

上記の手順の助けを借りて、私は上記のすべての機能を無効にすることができます。これらの機能はサーバーでは使用できなくなりました。

特定のディレクトリに対してこれらの機能を有効または無効にしたい場合、それは可能かどうか?

2
Himanshu Matta

信頼できる方法でそれを行うことは不可能です。現在のところ、phpには、特定の関数の特定のディレクトリをホワイトリストに登録するオプションがありません。特定のディレクトリで「禁止された」関数の実行を許可するカスタム関数を作成できますが、それはグローバルに許可する必要があり、プログラマーが禁止された関数に直接アクセスするのを妨げることはありません。

Disable_functions設定は、php.ini内でのみ使用でき、上書きを試みる他の方法は許可されていません(例:ini_setまたはApache構成を介して)。

つまり、実際には2つのオプションがあり、それを使用するかどうかはわかりませんが、その間にはありません。

ソース: http://php.net/manual/en/ini.core.php#ini.disable-functions

そして特にこれ:

このディレクティブはphp.iniで設定する必要があります。たとえば、これをhttpd.confで設定することはできません。

@slmこれは1つの戦略ですが、ディレクトリの外にエスカレートするのを防ぐことはできないので、それを行うにはファサードでわかりにくい方法になります。それがうまくいくとしても。

2