隐藏PHP的X-Powered-By标头

ale*_*lex 42 php header http-headers

我知道在PHP中,它发送X-Powered-By标头以获得PHP版本.

我也知道通过附加一些校验和,你可以访问PHP的学分和一些随机图像(这里有更多信息).

我也知道在php.ini你可以转expose_php = off.

但这是我在一些网站上所做的事情,这是有用的

header('X-Powered-By: Alex');
Run Code Online (Sandbox Code Playgroud)

当我查看标题时,我可以看到它现在是'Alex'而不是PHP版本.我的问题是,这将首先发送先前的PHP标头(在它到达我之前header(),是否可由任何嗅探器程序检测到?或者是由PHP收集的标题,然后再发送回浏览器?

顺便说一句,这不是为了安全性,只是好奇如何在PHP中使用标头.

Kem*_*emo 32

expose_php = Off如果您不希望它发送X-Powered-By标头,您可以在php.ini中设置.

PHP首先编译所有内容(包括哪些标题具有哪些值),然后启动输出,反之则不然.

PHP也可用自己的复活节彩蛋检测到,你可以在这里阅读这个主题:PHP复活节彩蛋


cle*_*tus 27

请参阅Apache提示与技巧:隐藏PHP版本(X-Powered-By)

Ups ...我们可以看到PHP添加了自己的横幅:

X-Powered-By: PHP/5.1.2-1+b1…
Run Code Online (Sandbox Code Playgroud)

让我们看看我们如何禁用它.为了防止PHP暴露它安装在服务器上的事实,通过将其签名添加到Web服务器头,我们需要在php.ini中找到 该变量expose_php并将其转换off.

默认情况下expose_php设置为"开".

在你的php.ini中(基于你的Linux发行版,这可以在各个地方找到,比如/etc/php.ini,/etc/php5/apache2/php.ini等)找到包含的行expose_php On并将其设置为Off :

expose_php = Off
Run Code Online (Sandbox Code Playgroud)

完成此更改后,PHP将不再将其签名添加到Web服务器标头中.这样做 不会使您的服务器更安全......它只会阻止远程主机轻松看到您在系统上安装了PHP以及您正在运行的版本.

  • 但这只建议在php.ini中设置'expose_php = Off'亚历克斯在他的帖子中已经提到过. (3认同)

Pow*_*ord 16

在PHP中,在PHP遇到第一个输出语句之前,不会发送标头.

这包括第一个之前的任何内容<?php.

这也是为什么setcookie发送警告,如果你尝试在输出一些东西后使用它:

警告:无法修改标头信息 - 已在第150行的/path/to/php/file.php中发送的标头(在/path/to/php/file.php:100处开始输出)

请注意,如果正在使用输出缓冲,则这些都不适用,因为在运行相应的输出缓冲命令之前不会发送输出.


小智 6

要隐藏 X-Powered-By: PHP/7.xx ,如果您使用共享托管,则在.htaccess文件中添加以下代码

\n
Header always unset X-Powered-By\nHeader unset X-Powered-By\n
Run Code Online (Sandbox Code Playgroud)\n

然后重新加载浏览器或使用 LiteSpeed \xe2\x80\x8b\xe2\x80\x8bCache 插件清除缓存: https: //en.wordpress.org/plugins/litespeed-cache/

\n