Publicado por & archivado en Linux, PHP, Programación, Servidores, WordPress.

WordPress muestra hace un tiempo un mensaje en el escritorio de algunos usuarios que dice:

WordPress ha detectado que tu sitio está funcionando con una versión insegura de PHP

¿Es esto cierto?

La mayoría de las veces no es cierto lo que dice esta advertencia.

Veamos por qué…

 

Ciclo de soporte oficial de PHP 

Para determinar que versión de PHP es insegura, lo que han hecho en WordPress es fijarse en el calendario de soporte de las versiones de PHP publicado por «PHP Group».

 

La advertencia sería correcta si el mantenimiento del PHP lo diera directamente «PHP Group», pero no es así.

Los paquetes de un sistema operativo Linux los mantienen los encargados de dar soporte al sistema operativo y no el autor del paquete.

Por ejemplo, en nuestro caso usamos Debian en todos nuestros servidores y los calendarios de soporte no coinciden con los de «PHP Group».

 

Soporte a largo plazo (Long Term Support)

En concreto, los servidores con Debian 9 LTS tienen como versión estable PHP 7.0 o 7.1 y mantenimiento hasta el 30 de junio de 2022, como puede verse en el calendario de soporte de Debian.

Si nos fijamos en las anteriores tablas, en Debian 10 (PHP 7.3), hay soporte hasta el 30 de junio de 2024, pero esta versión en PHP Group sólo tiene soporte hasta el 6 de diciembre de 2021, es decir, PHP 7.3 tiene en Debian «Stretch», 31 meses más de soporte que el oficial de PHP Group y, con casi total seguridad, a finales del año que viene veremos en mismo mensaje apocalíptico diciendo que la versión no es segura, algo que no es cierto.

En este artículo hablamos del caso concreto de Debian, una de las distribuciones más usadas en servidores, pero es extrapolable a muchas más, como Ubuntu, Fedora, Suse y RHEL / CentOS, por lo que de ninguna forma se trata de una excepción, sino más bien de una regla.

 

Soporte a largo plazo extendido (Long Term Support Extend)

Adicionalmente existe la posibilidad de aumentar el soporte de seguridad en muchos sistemas operativos Linux con los soportes extendidos, como el ELTS en Debian (Extend LTS), que tiene soporte hasta el 30 de junio de 2022 para Debian 8 «Jessi» (esta versión viene con PHP 5.6). El soporte para Debian 9 aun no está definido en el momento de escribir esto, pero seguramente será hasta el 30 de junio de 2026.

Instalar versiones adicionales de PHP en los servidores

Es posible instalar o compilar nuevas versiones de PHP y activarlas en los servidores junto con el paquete por defecto, pero los cambios de versiones no sólo aportan mejoras, también pueden producir problemas y es por eso que se tiende a alargar la vida útil durante periodos de unos 5 años, para evitar incurrir en costes de mantenimiento innecesarios en sitios en producción que funcionan de forma estable.

La decisión que ha tomado Automattic de mostrar esos mensajes en WordPress es muy cuestionable, generan alerta en los usuarios e incitan a cambios de versión, que incluso podrían producir fallos en sitios web que están funcionando correctamente, ya que antes de cambiar la versión de PHP hay que asegurarse de que todos los plugins y programaciones usados, y no sólo el propio WordPress, soportan estas nuevas versiones. Por tanto, incitar a cambiar a la última versión disponible de PHP, lejos de mejorar algo, podría causar problemas.

 

Soporte de PHP 8 en WordPress

El 13 de diciembre de 2020 han publicado WordPress 5.6, por primera vez con soporte «preliminar» para PHP 8, que está disponible como versión estable desde el 26 de noviembre de 2020.

PHP 8 es un cambio de versión importante y trae cambios que pueden hacer fallar el código de versiones PHP 7 y anteriores.

En concreto, hay algo que siempre estuvo mal en PHP, el «Saner string to number comparisons».

Muchos de los que programamos en PHP sabemos esto y nos congratulamos de que por fin hayan tomado la decisión de corregir este funcionamiento anómalo, pero no nos confundamos, traerá problemas porque ha cambiado el resultado de un tipo de comparación por la contraria:

PHP 7:
0 == ‘foobar’ // true

PHP 8:
0 == ‘foobar’ // false

Esto significa que podría haber comparaciones que dieran un resultado opuesto al esperado si se cambia a PHP 8, algo que además de errores puede producir problemas de seguridad. Las posibilidades de error son infinitas y dependen por completo del código.

Tengamos en cuenta que esto afecta no sólo a WordPress, sino a todos los plugins, plantillas y modificaciones hechas a medida.

 

¿Debemos cambiar la versión de PHP al ver ese mensaje?

En nuestra opinión, no sólo no se debería cambiar la versión de PHP si no es totalmente necesario, sino que ese mensaje debería eliminarse de WordPress, o al menos deberían detectar el sistema operativo instalado en el servidor y no sólo la versión de PHP, para determinar si la versión instalada es insegura.

Esto es muy fácil porque el string que devuelve la función phpversion(), contiene también la versión del sistema operativo:

7.1.3324+0~20201103.44+debian9~1.gbp50e805

En el caso del ejemplo es una versión PHP 7.1.33, revisión 24, publicada el 3/11/2020 para Debian 9, por lo que no costaría nada determinar que la versión tiene soporte hasta el 30 de junio de 2022.

Como se puede ver, esta versión de PHP ha sido publicada el 3 de noviembre de 2020, a pesar de que PHP Group dejó de darle mantenimiento el 6 de diciembre de 2019. Esto deja bien claro que el alarmante mensaje que muestra WordPress es erróneo, por no considerar quién es realmente el que ofrece el soporte de seguridad.

Por tanto, nuestra recomendación es que simplemente se ignore el mensaje porque casi siempre es incorrecto.

Es una lástima la falta de rigor que ha tenido Automattic en esta ocasión, porque ese mensaje no ayuda a nadie, sólo crea alarma y confusión.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.