{"id":1866,"date":"2020-12-30T21:09:12","date_gmt":"2020-12-30T20:09:12","guid":{"rendered":"https:\/\/intervia.com\/doc\/?p=1866"},"modified":"2022-02-07T17:06:47","modified_gmt":"2022-02-07T16:06:47","slug":"wordpress-tu-sitio-esta-funcionando-con-una-version-insegura-de-php","status":"publish","type":"post","link":"https:\/\/intervia.com\/doc\/wordpress-tu-sitio-esta-funcionando-con-una-version-insegura-de-php\/","title":{"rendered":"WordPress: \u00abTu sitio est\u00e1 funcionando con una versi\u00f3n insegura de PHP\u00bb \u00bfEn serio?"},"content":{"rendered":"<p class=\"lead\">WordPress muestra hace un tiempo un mensaje en el escritorio de algunos usuarios que dice:<\/p>\n<blockquote><p>WordPress ha detectado que tu sitio est\u00e1 funcionando con una versi\u00f3n insegura de PHP<\/p><\/blockquote>\n<p><strong>\u00bfEs esto cierto?<\/strong><\/p>\n<p><!--more--><\/p>\n<h3><\/h3>\n<h3><strong>La mayor\u00eda de las veces no es cierto lo que dice esta advertencia.<\/strong><\/h3>\n<a href=\"\/doc\/wp-content\/uploads\/2020\/12\/wp_mensaje_apocaliptico-15487089.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1867 size-full\" src=\"\/doc\/wp-content\/uploads\/2020\/12\/wp_mensaje_apocaliptico-15487089.jpg\" alt=\"\" width=\"419\" height=\"274\" srcset=\"https:\/\/intervia.com\/doc\/wp-content\/uploads\/2020\/12\/wp_mensaje_apocaliptico-15487089.jpg 419w, https:\/\/intervia.com\/doc\/wp-content\/uploads\/2020\/12\/wp_mensaje_apocaliptico-15487089-300x196.jpg 300w\" sizes=\"auto, (max-width: 419px) 100vw, 419px\" \/><\/a>\n<p>Veamos por qu\u00e9\u2026<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Ciclo de soporte oficial de PHP\u00a0<\/strong><\/h3>\n<p>Para determinar que versi\u00f3n de PHP es insegura, lo que han hecho en WordPress es fijarse en el <a href=\"https:\/\/www.php.net\/supported-versions.php\" target=\"_blank\" rel=\"noopener\">calendario de soporte de las versiones de PHP publicado por \u00abPHP Group\u00bb<\/a>.<\/p>\n<a href=\"\/doc\/wp-content\/uploads\/2020\/12\/PHP-Supported-Versions-28461484.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1868 size-full\" src=\"\/doc\/wp-content\/uploads\/2020\/12\/PHP-Supported-Versions-28461484.jpg\" alt=\"\" width=\"966\" height=\"566\" srcset=\"https:\/\/intervia.com\/doc\/wp-content\/uploads\/2020\/12\/PHP-Supported-Versions-28461484.jpg 966w, https:\/\/intervia.com\/doc\/wp-content\/uploads\/2020\/12\/PHP-Supported-Versions-28461484-300x176.jpg 300w, https:\/\/intervia.com\/doc\/wp-content\/uploads\/2020\/12\/PHP-Supported-Versions-28461484-768x450.jpg 768w\" sizes=\"auto, (max-width: 966px) 100vw, 966px\" \/><\/a>\n<p>&nbsp;<\/p>\n<p>La advertencia ser\u00eda correcta si el mantenimiento del PHP lo diera directamente \u00abPHP Group\u00bb, pero no es as\u00ed.<\/p>\n<p>Los paquetes de un sistema operativo Linux los mantienen los encargados de dar soporte al sistema operativo y no el autor del paquete.<\/p>\n<p>Por ejemplo, en nuestro caso usamos Debian en todos nuestros servidores y los calendarios de soporte no coinciden con los de \u00abPHP Group\u00bb.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Soporte a largo plazo (<a href=\"https:\/\/es.wikipedia.org\/wiki\/Soporte_de_largo_plazo\" target=\"_blank\" rel=\"noopener\">Long Term Support<\/a>)<\/strong><\/h3>\n<p>En concreto, los servidores con Debian 9 LTS tienen como versi\u00f3n estable PHP 7.0 o 7.1 y mantenimiento hasta el 30 de junio de 2022, como puede verse en el <a href=\"https:\/\/wiki.debian.org\/LTS\" target=\"_blank\" rel=\"noopener\">calendario de soporte de Debian<\/a>.<\/p>\n<a href=\"\/doc\/wp-content\/uploads\/2020\/12\/LTS-Debian-Wiki-14717303.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1869 size-full\" src=\"\/doc\/wp-content\/uploads\/2020\/12\/LTS-Debian-Wiki-14717303.jpg\" alt=\"\" width=\"815\" height=\"209\" srcset=\"https:\/\/intervia.com\/doc\/wp-content\/uploads\/2020\/12\/LTS-Debian-Wiki-14717303.jpg 815w, https:\/\/intervia.com\/doc\/wp-content\/uploads\/2020\/12\/LTS-Debian-Wiki-14717303-300x77.jpg 300w, https:\/\/intervia.com\/doc\/wp-content\/uploads\/2020\/12\/LTS-Debian-Wiki-14717303-768x197.jpg 768w\" sizes=\"auto, (max-width: 815px) 100vw, 815px\" \/><\/a>\n<p>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\u00f3n en PHP Group s\u00f3lo tiene soporte hasta el 6 de diciembre de 2021, es decir, PHP 7.3 tiene en Debian \u00abStretch\u00bb, 31 meses m\u00e1s de soporte que el oficial de PHP Group y, con casi total seguridad, a finales del a\u00f1o que viene veremos en mismo mensaje apocal\u00edptico diciendo que la versi\u00f3n no es segura, algo que no es cierto.<\/p>\n<p>En este art\u00edculo hablamos del caso concreto de Debian, una de las distribuciones m\u00e1s usadas en servidores, pero es extrapolable a muchas m\u00e1s, como Ubuntu, Fedora, Suse y RHEL \/ CentOS, por lo que de ninguna forma se trata de una excepci\u00f3n, sino m\u00e1s bien de una regla.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Soporte a largo plazo extendido (<a href=\"https:\/\/wiki.debian.org\/LTS\/Extended\" target=\"_blank\" rel=\"noopener\">Long Term Support Extend<\/a>)<\/strong><\/h3>\n<p>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 \u00abJessi\u00bb (esta versi\u00f3n viene con PHP 5.6). El soporte para Debian 9 aun no est\u00e1 definido en el momento de escribir esto, pero seguramente ser\u00e1 hasta el 30 de junio de 2026.<\/p>\n<a href=\"\/doc\/wp-content\/uploads\/2020\/12\/LTS-Extended-Debian-Wiki-18021483.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1870 size-full\" src=\"\/doc\/wp-content\/uploads\/2020\/12\/LTS-Extended-Debian-Wiki-18021483.jpg\" alt=\"\" width=\"1139\" height=\"227\" srcset=\"https:\/\/intervia.com\/doc\/wp-content\/uploads\/2020\/12\/LTS-Extended-Debian-Wiki-18021483.jpg 1139w, https:\/\/intervia.com\/doc\/wp-content\/uploads\/2020\/12\/LTS-Extended-Debian-Wiki-18021483-300x60.jpg 300w, https:\/\/intervia.com\/doc\/wp-content\/uploads\/2020\/12\/LTS-Extended-Debian-Wiki-18021483-768x153.jpg 768w, https:\/\/intervia.com\/doc\/wp-content\/uploads\/2020\/12\/LTS-Extended-Debian-Wiki-18021483-1024x204.jpg 1024w\" sizes=\"auto, (max-width: 1139px) 100vw, 1139px\" \/><\/a>\n<h3><strong>Instalar versiones adicionales de PHP en los servidores<\/strong><\/h3>\n<p>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\u00f3lo aportan mejoras, tambi\u00e9n pueden producir problemas y es por eso que se tiende a alargar la vida \u00fatil durante periodos de unos 5 a\u00f1os, para evitar incurrir en costes de mantenimiento innecesarios en sitios en producci\u00f3n que funcionan de forma estable.<\/p>\n<p>La decisi\u00f3n que ha tomado Automattic de mostrar esos mensajes en WordPress es muy cuestionable, generan alerta en los usuarios e incitan a cambios de versi\u00f3n, que incluso podr\u00edan producir fallos en sitios web que est\u00e1n funcionando correctamente, ya que antes de cambiar la versi\u00f3n de PHP hay que asegurarse de que todos los plugins y programaciones usados, y no s\u00f3lo el propio WordPress, soportan estas nuevas versiones. Por tanto, incitar a cambiar a la \u00faltima versi\u00f3n disponible de PHP, lejos de mejorar algo, podr\u00eda causar problemas.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Soporte de PHP 8 en WordPress<\/strong><\/h3>\n<p>El 13 de diciembre de 2020 han publicado WordPress 5.6, por primera vez con soporte \u00abpreliminar\u00bb para PHP 8, que est\u00e1 disponible como versi\u00f3n estable desde el 26 de noviembre de 2020.<\/p>\n<p>PHP 8 es un cambio de versi\u00f3n importante y trae cambios que pueden hacer fallar el c\u00f3digo de versiones PHP 7 y anteriores.<\/p>\n<p>En concreto, hay algo que siempre estuvo mal en PHP, el <span style=\"font-family: Ubuntu;\"><a href=\"https:\/\/wiki.php.net\/rfc\/string_to_number_comparison\" target=\"_blank\" rel=\"noopener\">\u00abSaner string to number comparisons\u00bb<\/a>.<\/span><\/p>\n<p><span style=\"font-family: Ubuntu;\">Muchos de los que programamos en PHP sabemos esto y nos congratulamos de que por fin hayan tomado la decisi\u00f3n de corregir este funcionamiento an\u00f3malo, pero no nos confundamos, traer\u00e1 problemas porque ha cambiado el resultado de un tipo de comparaci\u00f3n por la contraria:<\/span><\/p>\n<blockquote><p><span style=\"font-family: Ubuntu;\"><strong>PHP 7:<\/strong><br \/>\n<\/span><span style=\"font-family: Ubuntu;\">0 == &#8216;foobar&#8217; \/\/ true<\/span><\/p>\n<p><span style=\"font-family: Ubuntu;\"><strong>PHP 8:<\/strong><br \/>\n0 == &#8216;foobar&#8217; \/\/ false<\/span><\/p><\/blockquote>\n<p>Esto significa que podr\u00eda haber comparaciones que dieran un resultado opuesto al esperado si se cambia a PHP 8, algo que adem\u00e1s de errores puede producir problemas de seguridad. Las posibilidades de error son infinitas y dependen por completo del c\u00f3digo.<\/p>\n<p>Tengamos en cuenta que esto afecta no s\u00f3lo a WordPress, sino a todos los plugins, plantillas y modificaciones hechas a medida.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>\u00bfDebemos cambiar la versi\u00f3n de PHP al ver ese mensaje?<\/strong><\/h3>\n<p>En nuestra opini\u00f3n, no s\u00f3lo no se deber\u00eda cambiar la versi\u00f3n de PHP si no es totalmente necesario, sino que ese mensaje deber\u00eda eliminarse de WordPress, o al menos deber\u00edan detectar el sistema operativo instalado en el servidor y no s\u00f3lo la versi\u00f3n de PHP, para determinar si la versi\u00f3n instalada es insegura.<\/p>\n<p>Esto es muy f\u00e1cil porque el string que devuelve la funci\u00f3n phpversion(), contiene tambi\u00e9n la versi\u00f3n del sistema operativo:<\/p>\n<blockquote><p><span class=\"token number\">7.1<\/span><span class=\"token punctuation\">.<\/span><span class=\"token number\">33<\/span><span class=\"token operator\">&#8211;<\/span><span class=\"token number\">24<\/span><span class=\"token operator\">+<\/span><span class=\"token number\">0<\/span><span class=\"token operator\">~<\/span><span class=\"token number\">20201103.44<\/span><span class=\"token operator\">+<\/span>debian9<span class=\"token operator\">~<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">.<\/span>gbp50e805<\/p><\/blockquote>\n<p>En el caso del ejemplo es una versi\u00f3n PHP 7.1.33, revisi\u00f3n 24, publicada el 3\/11\/2020 para Debian 9, por lo que no costar\u00eda nada determinar que la versi\u00f3n tiene soporte hasta el 30 de junio de 2022.<\/p>\n<p>Como se puede ver, esta versi\u00f3n de PHP ha sido publicada el 3 de noviembre de 2020, a pesar de que PHP Group dej\u00f3 de darle mantenimiento el 6 de diciembre de 2019. Esto deja bien claro que el alarmante mensaje que muestra WordPress es err\u00f3neo, por no considerar qui\u00e9n es realmente el que ofrece el soporte de seguridad.<\/p>\n<p>Por tanto, nuestra recomendaci\u00f3n es que simplemente se ignore el mensaje porque casi siempre es incorrecto.<\/p>\n<p>Es una l\u00e1stima la falta de rigor que ha tenido Automattic en esta ocasi\u00f3n, porque ese mensaje no ayuda a nadie, s\u00f3lo crea alarma y confusi\u00f3n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress muestra hace un tiempo un mensaje en el escritorio de algunos usuarios que dice: WordPress ha detectado que tu sitio est\u00e1 funcionando con una versi\u00f3n insegura de PHP \u00bfEs esto cierto?<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,88,87,149,150],"tags":[],"class_list":["post-1866","post","type-post","status-publish","format-standard","hentry","category-linux","category-php","category-programacion","category-servidores","category-wordpress"],"_links":{"self":[{"href":"https:\/\/intervia.com\/doc\/wp-json\/wp\/v2\/posts\/1866","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/intervia.com\/doc\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/intervia.com\/doc\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/intervia.com\/doc\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/intervia.com\/doc\/wp-json\/wp\/v2\/comments?post=1866"}],"version-history":[{"count":2,"href":"https:\/\/intervia.com\/doc\/wp-json\/wp\/v2\/posts\/1866\/revisions"}],"predecessor-version":[{"id":1981,"href":"https:\/\/intervia.com\/doc\/wp-json\/wp\/v2\/posts\/1866\/revisions\/1981"}],"wp:attachment":[{"href":"https:\/\/intervia.com\/doc\/wp-json\/wp\/v2\/media?parent=1866"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/intervia.com\/doc\/wp-json\/wp\/v2\/categories?post=1866"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/intervia.com\/doc\/wp-json\/wp\/v2\/tags?post=1866"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}