Por qué no deberías usar Wordpress
 

Problemas de rendimiento, seguridad y SEO

Click here for the English version.

Sé que Wordpress es un objetivo fácil de criticar y ya ha sido criticado hasta el infinito, pero soy nuevo en los blogs, por lo tanto atacar Wordpress parece un buen lugar para comenzar.

Wordpress es un sistema de gestión de contenido que se ejecuta en PHP con MariaDB o MySQL. Es gratuito y de código abierto y, según todas las cuentas, el CMS más popular del mundo.

Durante mucho tiempo, Wordpress era una de las primeras herramientas que se me ocurrían para crear rápidamente un sitio web con contenido administrado que se puede ampliar fácilmente con 'plugins' de la comunidad.

Dicho esto, Wordpress tiene, por defecto, unos comportamientos extraños y peligrosos que no son evidentes para las personas sin experiencia en el desarollo de sitios web. Wordpress, para el ojo inexperto, parece muy limpio y bien optimizado. Sin embargo, se requiere un alto nivel de conocimientos técnicos para corregir varias fallas de seguridad, problemas de rendimiento y prácticas hostiles de SEO.

Por lo tanto, me pregunto: ¿Para quien es Wordpress realmente? No me queda nada claro porque es un campo minado para el profano, y para desarolladores web hay un montón de alternativas muy superiores.

Caos de plugins


En PHP hay Composer. En NodeJS, hay NPM y Yarn. La única gestión de dependencias de Wordpress es asegurarse de que el plugin que se está descargando sea aparentemente compatible con la versión actual de Wordpress.

Si bien algunos de los plugins son excelentes, la calidad varía. Y una vez que se haya instalado varios plugins, comienzan los problemas debido a la falta de gestión de dependencias.

Algunos plugins chocarán con otros. Algunos tienen fallas de seguridad que no se actualizan. Si se actualizan, la actualización puede ser incompatible con los otros plugins que se ha instalado.

Cuando se actualiza Wordpress, lo cual hay que hacer con frecuencia, es posible que los plugins que se había instalado anteriormente hayan dejado de funcionar o incluso que todo el sitio web se haya estropeado.

Las fallas de seguridad se encuentran regularmente en los plugins, que a menudo son el punto de entrada para muchos hacks. Cada plugin que se instala aumenta el área de superficie para que un hacker encuentre un punto de entrada al sitio web.

Vulnerabilidades por defecto


La ampliamente conocida página de inicio de sesión - '/wp-admin' - hace que sea realmente fácil para que los hackers encuentren un punto de entrada a su backend. Wordpress no hace que sea fácil cambiar la URL de acceso al backend, sin instalar plugins externos (con sus propios riesgos como mencioné anteriormente).

Y ahora el comportamiento predeterminado más extraño y peligroso de Wordpress: te dice cuando el nombre de usuario es incorrecto. Ningún error genérico como debería ser. Efectivamente, te dice directamente si el nombre de usuario existe o no. Esta es una gran falla de seguridad, ya que expone indirectamente los nombres de usuario en la base de datos. Puedes probar el 'admin' predeterminado (que muchas personas no cambiarán) y la mayoría de las veces pondrá que existe este nombre de usuario.

Si 'admin' no funciona (normalmente funciona), es extremadamente fácil enumerar los nombres de usuario utilizando herramientas disponibles en Linux Kali con la más mínima experiencia de hacking. A menudo, no es necesario llegar a estos extremos: Wordpress expone los nombres de usuario a través de la etiqueta de autor en las publicaciones. Simplemente ve a la página del autor (/author/pepe1981) y se expone en la URL.

Saber el nombre de usuario gana la mitad de la batalla, y dado que Wordpress por sí solo no limita el número de intentos de inicio de sesión, la única limitación real para un ataque de fuerza bruta es la capacidad del servidor. Los CDN como Cloudflare tienen características de seguridad que evitan ataques como estos, pero migrar a un CDN requiere cambios de DNS, lo cual es algo delicado de tocar para inexpertos.

Entonces, en estos casos, es realmente necesario instalar plugins externos para corregir este comportamiento predeterminado. El plugin que al final se elija podría tener vulnerabilidades y en realidad proporcionar más área de superficie para que los hackers la exploten.

Vulnerabilidades de permisos de archivos


Si obtienen acceso al backend, también tienen permisos de escritura (write permission) en varios directorios del servidor. Esto se debe a que se puede editar archivos directamente a través de la sección 'apariencia'. Si se alojan otras cosas en el mismo servidor que la instalación de Wordpress, también están en riesgo.

Interacción cliente-servidor


Wordpress no hace uso de frameworks front-end modernos como Vue y React. Sin funciones asincrónicas, preloading o precarga de ruta. Por lo tanto, el tiempo para la primera pintura con contenido (time to first contentful paint) es lento, lo cual es un factor importante en el SEO. Muchas 'páginas' en Wordpress cambian raramente: son esencialmente estáticas. Pero Wordpress consulta la base de datos cada vez que se accede a la página.

Con Static Site Generation (generación stático del sitio ¿?) en muchos frameworks de producción (en mi caso utilizo NextJS), parece ineficaz consultar la base de datos en cada solicitud de datos esencialmente estáticos. Incluso si el contenido es dinámico y cambia con regularidad, la Regeneración Estática Incremental lo resuelve (en el caso de NextJS).

El uso de estas tecnologías podría ahorrar 10.000 euros al año en costes de alojamiento para sitios web con alto volumen de tráfico.

URL de las publicaciones


Wordpress muestra la ID de la publicación (exponiendo una clave principal) de forma predeterminada. Esto significa que la URL de la publicación se verá así por defecto: /?p=123. El hecho de que este sea el comportamiento predeterminado casi no tiene sentido. En el mundo real, este formato casi nunca se usaría para solicitudes GET. En primer lugar, expone el nombre y el valor de una clave principal en su tabla de publicaciones. Obviamente es muy útil saber todo esto si eres un hacker. En segundo lugar, y más claramente, esta URL no tiene ningún sentido para los humanos ni para los motores de búsqueda. No proporciona ningún contexto al rastreador ni al humano sobre el contenido de la publicación. Esto afectará negativamente al SEO.

Contenido duplicado por defecto


La mayoría de los temas de Wordpress muestran un extracto de cada publicación. En mi experiencia, los extractos son demasiado largos por defecto, pero eso es una cuestión de diseño y preferencia personal. El problema surge con las páginas de 'autor' y 'categoría'. Estas páginas no incluyen una etiqueta 'noindex' de forma predeterminada, pero consisten puramente en contenido duplicado.

Es un fallo grande en el SEO. Directamente de Google:

Conoce el sistema de administración de contenido: asegúrate de conocer la forma en que se muestra el contenido de tu sitio web. Los blogs, los foros y sus sistemas relacionados suelen mostrar el mismo contenido en distintos formatos. Por ejemplo, la entrada de un blog puede aparecer en la página principal, en una página de archivo y en una página con otras entradas bajo la misma etiqueta.

Sin conocimientos técnicos, no es fácil corregir este comportamiento predeterminado sin el uso de plugins de terceros (mira más arriba.......).

Conclusión


No es evidente para mí para quién es realmente Wordpress. Para alguien que no sea desarrollador web, puede parecer una buena solución en la superficie, pero como mencioné anteriormente, hay muchas, muchas fallas que deben corregirse manualmente. Sus problemas de seguridad podrían llegar a causar problemas legales importantes para una empresa en caso de una fuga de datos personales.

Si eres un desarrollador web, Wordpress es una exageración para la mayoría de los casos de uso y requiere muchas manipulaciones y pequeños trucos para que funcione como quieres. Encontré Frontity que usa React para el frontend y trata a Wordpress como un CMS sin cabeza (headless CMS). Realmente no lo he investigado demasiado, pero parece una buena solución para actualizar Wordpress con frameworks modernos como React. También hay un montón de headless CMS de verdad como Strapi y Ghost. Echa un vistazo a la publicación de Ghost si quieres más motivos para evitar Wordpress.

About

Escribo en español e inglés sobre React, NextJS, PHP, y SEO entre otras cosas.

About

Escribo en español e inglés sobre React, NextJS, PHP, y SEO entre otras cosas.

Copyright © 2021 Jack A.