web-dev-qa-db-ja.com

Apache / PHPがphpinfo()の環境変数セクションを表示しないようにするにはどうすればよいですか?

ユーザーがphpinfo()を使用して環境変数に格納されているプラ​​イベートデータを誤って公開しないようにする必要があります。 phpinfoでレンダリングされたセクションを禁止するようにApacheまたはphp.iniを構成する方法はありますか?

4
Tim Santeford

phpinfo()が表示する情報は、少しだけか、まったくありません。表示する情報を制限するようにphpinfo()に指示できますが、関数を正しく呼び出すにはユーザーを信頼する必要があります。

http://php.net/manual/en/function.phpinfo.php

disable_functionsファイルのphp.iniディレクティブを使用して、関数を完全に無効にすることができます。

http://www.php.net/manual/en/ini.core.php#ini.disable-functions

例えば:

disable_functions = phpinfo

冒険心がある場合は、PHPソースを取得し、環境変数をレンダリングするビットをハックアウトしてから、再コンパイルできます。たとえば、PHP 5.3 .6関連するコードは、/ext/standard/info.cの950行目あたりにあります。

if (flag & PHP_INFO_ENVIRONMENT) {
  SECTION("Environment");
  php_info_print_table_start();
  php_info_print_table_header(2, "Variable", "Value");
  for (env=environ; env!=NULL && *env !=NULL; env++) {
    tmp1 = estrdup(*env);
    if (!(tmp2=strchr(tmp1,'='))) { /* malformed entry? */
      efree(tmp1);
      continue;
    }
    *tmp2 = 0;
    tmp2++;
    php_info_print_table_row(2, tmp1, tmp2);
    efree(tmp1);
  }
  php_info_print_table_end();
}
6
Kev