En esta guía veremos cómo ocultar la versión de PHP en nuestro servidor para que no se muestra en las peticiones de información de otros servidores. El objetivo es ocultar esta información relativa a nuestro servidor para tener mayor privacidad y mayor seguridad. Anteriormente ya hemos explicado cómo obtener la versión de PHP de un servidor remoto. De este modo agregaremos una capa de seguridad adicional a nuestro servidor. Ésto no hará que nuestro servidor sea más seguro, ya que lo único que hacemos es ocultar algo, no arreglar un posible error.
Antes de nada, contamos con que tenemos la versión 1.3 o superior de Apache y el módulo mod-php (ya sea PHP4 o PHP5) de Apache.
Si realizamos una petición HEAD a una URL o a un archivo estático, no se mostrará la versión de PHP tal y como podemos ver a continuación.
$ HEAD http://servidor_remoto.com/pagina.html 200 OK Connection: close Date: Thu, 17 Sep 2015 20:02:04 GMT Server: Apache Content-Type: text/html; charset=UTF-8 Client-Date: Thu, 17 Sep 2015 21:05:03 GMT Client-Response-Num: 1
Como veis, no hay ni rastro de la versión de PHP que usamos cuando hacemos una petición a la URL estática http://servidor_remoto.com/pagina.html. Sin embargo, cuando hacemos una petición a un archivo que usa PHP, ya podemos ver esta información.
$ HEAD http://servidor_remoto.com/index.php 200 OK Connection: close Date: Thu, 17 Sep 2015 21:03:05 GMT Server: Apache Content-Type: text/html; charset=UTF-8 Client-Date: Thu, 17 Sep 2015 22:06:04 GMT Client-Response-Num: 1 X-Powered-By: PHP/5.2.3-2+b1
Como vemos, la versión de PHP se muestra en la línea «X-Powered-By: PHP/5.2.3-2+b1«. Para evitar que se muestre esta línea tenemos que abrir el archivo php.ini
, que suele localizarse en la carpeta «/etc«, aunque puede estar en otro lado como la ruta «/etc/php5/apache2/php.ini» dependiendo de vuestra configuración.
[root@server /]# nano /etc/php.ini
Una vez abierto el archivo con nuestro editor de texto preferido (vi, nano…), buscamos la línea donde pone expose_php = On
, que es su valor por defecto. Lo que tenemos que hacer es cambiar su valor a Off.
... expose_php = Off ...
Guardamos el archivo php.ini y reiniciamos el servidor de alguno de los dos modos.
[root@server /]# service apache2 restart
NOTA: Es posible que vuestro servicio de apache se llame httpd dependiendo de vuestro distribución de Linux.
Espero que la guía os haya sido útil.