检查当前 PHP 配置是否存在潜在安全漏洞。
只需通过 Web 服务器访问此文件或在 CLI 上运行即可。
该软件由 Ben Fuhrmannek 编写,来自 SektionEins GmbH,旨在自动化 php.ini 检查并将更多时间用于愉快的工作。
CLI:只需调用 php phpconfigcheck.php 即可。就这样。加上 -a 可查看隐藏结果,-h 用于 HTML 输出,-j 用于 JSON 输出。
WEB:将此脚本复制到 Web 服务器可访问的任意目录,例如文档根目录。另请参见下方的“安全措施”。
非 CLI 模式下的输出默认为 HTML。可以通过设置环境变量 PCC_OUTPUT_TYPE=text 或 PCC_OUTPUT_TYPE=json 来更改此行为。
某些测试用例默认隐藏,特别是跳过、通过和未知/未测试的。要显示所有结果,请使用 phpconfigcheck.php?showall=1。这不适用于 JSON 输出,JSON 输出默认返回所有结果。
要在 WEB 模式下控制输出格式,请使用 phpconfigcheck.php?format=...,其中 format 的值可以是 text、html 或 json 之一。例如:phpconfigcheck.php?format=text。format 参数的优先级高于 PCC_OUTPUT_TYPE。
大多数情况下,将 PHP 配置等安全相关问题保密是个好主意。已实现以下安全措施:
mtime 检查:此脚本在非 CLI 模式下两天后停止工作。可以通过 touch phpconfigcheck.php 或再次将脚本复制到服务器(例如通过 SCP)来重新启用检查。可以通过设置环境变量 PCC_DISABLE_MTIME=1 来禁用此检查,例如在 Apache 的 .htaccess 中设置 SetEnv PCC_DISABLE_MTIME 1。
源 IP 检查:默认仅允许 localhost(127.0.0.1 和 ::1)访问此脚本。可以通过将 PCC_ALLOW_IP 设置为您的 IP 地址或通配符模式来添加其他主机,例如在 .htaccess 中设置 SetEnv PCC_ALLOW_IP 10.0.0.*。您也可以选择通过 SSH 端口转发访问您的 Web 服务器,例如 ssh -D 或 ssh -L。
禁用函数: 此脚本需要一些函数才能正常工作,例如 ini_get() 和 stat()。如果这些函数被列入黑名单(或未列入白名单),则执行将失败或产生无效输出。在这些情况下,可以_临时_将 Suhosin 置于模拟模式并忽略 disable_functions。为安全起见,可以在单独的目录中使用 .htaccess 进行宽松的安全配置。此外,可以使用 Web 服务器的配置从命令行调用此脚本,例如 php -n -c /etc/.../php.ini phpconfigcheck.php。
CLI: 较旧的 PHP 版本不认识 SAPI 名称 'cli',即使在 cli 上也使用 CGI 风格的输出。解决方法:PCC_OUTPUT_TYPE=text /opt/php/php-5.1.6/bin/php phpconfigcheck.php
此工具仅会帮助您设置安全的 PHP 环境。仅此而已。您的设置、软件或任何相关配置可能仍然存在漏洞,即使此工具的输出表明并非如此。