重要信息
某些基于 CGI 的 PHP 设置中存在一个严重的漏洞,至少 8 年未被发现。
对于 PHP 来说,这意味着包含 ?-s 的请求可能会转储页面的 PHP 源代码。
确保更新到最新版本和/或使用 .htaccess 修补程序,两者都可以在此处获得
PHP 5.3.12 和 PHP 5.4.2 发布
https://php.net/archive/2012.php#id2012-05-03-1
重要信息
某些基于 CGI 的 PHP 设置中存在一个严重的漏洞,至少 8 年未被发现。
对于 PHP 来说,这意味着包含 ?-s 的请求可能会转储页面的 PHP 源代码。
确保更新到最新版本和/或使用 .htaccess 修补程序,两者都可以在此处获得
PHP 5.3.12 和 PHP 5.4.2 发布
https://php.net/archive/2012.php#id2012-05-03-1
更好的是,使用 binfmt_misc:(仅限 Linux)
echo :php3:E::php3::/usr/bin/php: > /proc/sys/fs/binfmt_misc/register
消除了文件顶部 #! 的需要。
要将 php-cgi 与 suexec 一起使用,最好每个虚拟主机都有自己的 php.ini。这与
SetEnv PHPRC /var/www/server/www.test.com/conf
但 suexec 会终止此环境,因为它不知道它是“安全的”,因此您必须编辑 suexec.c 以进行编译……
如果您正在使用 php per cgi 并且还启用了 mod_gzip,则必须禁用 mod_gzip 以使 php cgi 二进制文件使用 --enable-cgi-redirect。mod_gzip 始终将 REDIRECT_STATUS 设置为 200,这使得 php 二进制文件无法知道它是被直接调用还是被重定向调用。
如果您关心安全,最好设置
register_globals = off
enable_track_vars = on(从 PHP4.0.3 开始始终开启)
变量顺序的默认设置是
EGPCS
(环境变量/GET 变量/POST 变量/Cookie 变量/会话变量)
想象一下,如果您依赖 ENV VAR,但它被 GET/POST/COOKIE 变量覆盖了?
您收到“未指定输入文件”(又名“世界上第二有用的错误消息”)的最常见原因之一是您已将“doc_root”(在 php.ini 中)设置为与 Apache 配置中定义的“DocumentRoot”不同的值。
对于其他 Web 服务器也是如此。例如,在 lighttpd 上,确保“server.document-root”值与 php.ini 中定义的“doc_root”相同。
我已设置了安装 PHP 与 SuEXEC 的指南,这样就不需要 shebang(!#/usr/bin/php4)。希望这对您有所帮助。
http://www.pookey.co.uk/php-security.xml
如果您想使用 suexec 并通过 #!/usr/local/bin/php 引用您的 php 解释器,请确保在编译 php 时不使用 --enable-force-cgi-redirect。
这可能看起来很明显,但我花了 2 天时间才解决这个问题 :-(
回复 grange at club-internet dot fr
给出的 mod_rewrite 指令中存在几个错误。我发现以下内容有效
RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^cgi-bin/php.cgi - [F]
我删除了 RewriteCond 中的 =,并从 RewriteRule 中去掉了前导 /。
注意:将 PHP 作为 CGI 程序运行会更改 $_SERVER['SCRIPT_NAME'] 的值。当通过(普通)mod_PHP 机制运行时,它将设置为正在运行的 PHP 脚本的名称(实际上是路径)。当通过 CGI 运行时,它将改为指向 CGI 二进制文件的路径。
suexec 的替代方案是 suphp(http://www.suphp.org)。
“suPHP 是一种使用其所有者的权限执行 PHP 脚本的工具。它由一个 Apache 模块(mod_suphp)和一个由 Apache 模块调用以更改执行 PHP 解释器的进程的 uid 的 setuid root 二进制文件(suphp)组成。”(来自网站)
suEXEC 需要 CGI 模式,并且会减慢脚本速度。我这样做了
1. 将 php 安装为 DSO 模式。(最大速度和低安全性)
2. 使用 --enable-force-cgi-redirect 进行单独的 CGI 安装,将 php 放置到 cgi-bin
3. 对于使用 suEXEC 的更高安全性,请选择以下方法之一
3-1:放置一个包含此内容的 .htaccess 文件以覆盖主配置
AddType application/x-httpd-wphp php
Action application/x-httpd-wphp /cgi-bin/php
子目录中的所有 php 文件都将受到保护。
3-2:在 httpd.conf 中添加以下内容
AddType application/x-httpd-wphp sphp
Action application/x-httpd-wphp /cgi-bin/php
然后每个敏感的 php 文件都应重命名为 .sphp
将“php_value doc_root /home/user/html_docs”添加到 httpd.conf 中的每个虚拟主机指令。