phpinfo会泄露敏感信息吗_安全使用注意事项汇总【说明】

应禁用phpinfo()函数、删除测试文件、限制Web服务器访问、关闭错误显示并采用输出缓冲替代方案。具体包括修改php.ini禁用函数、清理phpinfo.php等文件、配置Apache/Nginx访问控制、关闭display_errors及用ob_start捕获写入安全日志。

phpinfo会泄露敏感信息吗_安全使用注意事项汇总【说明】

如果您在生产环境中运行 phpinfo() 函数,页面将直接输出 PHP 运行环境的完整配置详情,这会导致大量敏感信息被未授权访问者获取。以下是针对该风险的具体防护措施:

一、禁用 phpinfo() 函数

通过修改 PHP 配置文件,彻底阻止该函数被调用,是最根本的防御手段。此操作可使所有脚本中对 phpinfo() 的调用立即失效。

1、打开服务器上的 php.ini 文件。

2、定位到 disable_functions 行,若该行被注释则取消注释。

立即学习PHP免费学习笔记(深入)”;

3、在已有函数列表末尾添加 phpinfo,多个函数间用英文逗号分隔,例如:disable_functions = exec,passthru,shell_exec,system,phpinfo

4、保存文件并重启 Web 服务(如 Apache 或 Nginx)使配置生效。

二、删除或重命名测试文件

开发者常上传 phpinfo.php 用于环境验证,但上线后未清理,成为固定攻击入口。移除该文件可消除最常见泄露路径。

1、使用 find 命令扫描 Web 根目录下所有疑似文件:find /var/www/html -name “phpinfo.php” -o -name “info.php” -o -name “test.php” -type f

2、对搜索结果逐一确认内容是否含 phpinfo() 调用。

3、确认后执行删除操作:rm -f /path/to/phpinfo.php

4、若需保留调试能力,可将文件重命名为非公开可猜路径(如随机字符串),并禁止目录索引。

三、限制 Web 服务器访问权限

即使 phpinfo() 函数未被禁用,也可通过 Web 服务层拦截请求,仅允许可信来源访问。

1、对于 Apache,在对应站点目录下创建或编辑 .htaccess 文件。

Opus

Opus

AI生成视频工具

下载

2、添加如下规则,仅允许本地回环地址访问:Require ip 127.0.0.1 ::1

3、对于 Nginx,在 server 块中添加 location 段:location ~ ^/(phpinfo|info)/.php$ { deny all; }

4、重载配置:sudo systemctl reload apache2sudo nginx -s reload

四、禁用错误信息前端显示

display_errors 启用时,PHP 错误堆可能间接暴露 phpinfo() 所在路径或配置片段,需同步关闭。

1、在 php.ini 中查找 display_errors 行。

2、将其值设为 Off:display_errors = Off

3、同时确保 log_errors = On,并指定 error_log 路径供管理员审计。

4、若使用 .user.ini 或 .htaccess 控制,Apache 下可加:php_flag display_errors off

五、输出缓冲替代方案

开发阶段确需查看配置时,可避免直接输出至浏览器,改用缓冲捕获后定向写入受限日志文件。

1、新建 debug_info.php,内容以 ob_start() 开始:ob_start(); phpinfo(); $info = ob_get_contents(); ob_end_clean();

2、将 $info 写入非 Web 可访问路径,如 /tmp/php_debug_$(date +%s).log。

3、设置文件权限为 600:chmod 600 /tmp/php_debug_*.log

4、通过 SSH 登录后 cat 查看,不对外提供 HTTP 接口。

https://www.php.cn/faq/1963673.html

发表回复

Your email address will not be published. Required fields are marked *