Apache-2.2

如何防止 Apache/PHP 在 phpinfo() 中顯示環境變數部分?

  • April 6, 2022

我需要防止使用者使用 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();
}

引用自:https://serverfault.com/questions/399936