サーバーのセキュリティを向上させるために、サーバーの一部の機能を無効にしたい。私はこれらの手順に従いました:
ステップ:1開くphp.ini
ファイル:vi /etc/php.ini
ステップ:2検索disable_functions
そして次のように新しいリストを設定します:disable_functions = exec、passthru、Shell_exec、system
ステップ:サービスhttpdの再起動
上記の手順の助けを借りて、私は上記のすべての機能を無効にすることができます。これらの機能はサーバーでは使用できなくなりました。
特定のディレクトリに対してこれらの機能を有効または無効にしたい場合、それは可能かどうか?
信頼できる方法でそれを行うことは不可能です。現在のところ、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つの戦略ですが、ディレクトリの外にエスカレートするのを防ぐことはできないので、それを行うにはファサードでわかりにくい方法になります。それがうまくいくとしても。