删除X-Powered-By

时间:2010-04-18 09:49:05

标签: php http-headers

  1. 如何在PHP中删除X-Powered-By标头?我在Apache服务器上,我使用的是PHP 5.21。 我不能在php中使用header_remove函数,因为5.21不支持它。我使用了Header unset X-Powered-By,它在我的本地机器上工作,但不在我的生产服务器上。

  2. 如果php不支持ver<的header_remove() 5.3,有替代方案吗?

8 个答案:

答案 0 :(得分:219)

我认为这是由PHP.ini中的expose_php设置控制的:

expose_php = off
  

决定PHP是否可以公开它安装在服务器上的事实(例如,通过将其签名添加到Web服务器头)。它无论如何都不是安全威胁,但它可以确定您是否在服务器上使用PHP。

没有直接的安全风险,但正如David C所指出的那样,暴露过时的(可能是易受攻击的)PHP版本可能会邀请人们尝试攻击它。

答案 1 :(得分:69)

答案 2 :(得分:48)

如果您无法禁用expose_php directive来静音PHP的健谈(需要访问 php.ini ),您可以使用Apache’s Header directive删除标题字段:

Header unset X-Powered-By

答案 3 :(得分:20)

if (function_exists('header_remove')) {
    header_remove('X-Powered-By'); // PHP 5.3+
} else {
    @ini_set('expose_php', 'off');
}

答案 4 :(得分:13)

如果您有权访问php.ini,请设置expose_php = Off

答案 5 :(得分:2)

尝试在发送标头之前添加header()调用,例如:

header('X-Powered-By: Our company\'s development team');

无论php.ini

中的expose_php设置如何

答案 6 :(得分:1)

如果您使用FastCGI,请尝试:

fastcgi_hide_header X-Powered-By;

答案 7 :(得分:0)

此解决方案对我有用:)

请在脚本中添加以下行并进行检查。

可能不需要Ngnix / Apache等级别的设置。

header("Server:");