如何在PHP中删除X-Powered-By标头?我在Apache服务器上,我使用的是PHP 5.21。 我不能在php中使用header_remove函数,因为5.21不支持它。我使用了Header unset X-Powered-By,它在我的本地机器上工作,但不在我的生产服务器上。
如果php不支持ver<的header_remove() 5.3,有替代方案吗?
答案 0 :(得分:219)
我认为这是由PHP.ini中的expose_php
设置控制的:
expose_php = off
决定PHP是否可以公开它安装在服务器上的事实(例如,通过将其签名添加到Web服务器头)。它无论如何都不是安全威胁,但它可以确定您是否在服务器上使用PHP。
没有直接的安全风险,但正如David C所指出的那样,暴露过时的(可能是易受攻击的)PHP版本可能会邀请人们尝试攻击它。
答案 1 :(得分:69)
header_remove("X-Powered-By");
答案 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:");