Назад | Перейти на главную страницу

Как запретить Apache / PHP отображать раздел переменных среды в phpinfo ()?

Мне нужно предотвратить случайное раскрытие пользователями личных данных, хранящихся в переменных среды, с помощью phpinfo (). Есть ли способ настроить apache или php.ini, чтобы запретить отображение разделов с помощью phpinfo?

Информация, которая 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();
}