Como evito que o Apache / PHP mostre a seção de variáveis de ambiente em phpinfo ()?

4

Eu preciso evitar que os usuários exponham acidentalmente dados privados armazenados nas variáveis de ambiente com phpinfo (). Existe uma maneira de configurar o apache ou o php.ini para proibir as seções renderizadas com o phpinfo?

    
por Tim Santeford 18.06.2012 / 23:24

1 resposta

6

A informação que phpinfo() exibe é um pouco tudo ou nada. Você pode dizer a phpinfo() para limitar as informações a serem exibidas, mas você precisa confiar em seus usuários para chamar a função corretamente:

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

Você pode desativar totalmente a função usando a diretiva disable_functions no seu arquivo php.ini :

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

Por exemplo:

disable_functions = phpinfo

Se você está se sentindo aventureiro, você pode pegar o código fonte do PHP, cortar os bits que renderizam as variáveis Environment e depois recompilar. Por exemplo, no PHP 5.3.6, o código relevante pode ser encontrado em /ext/standard/info.c na linha 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();
}
    
por 19.06.2012 / 02:32