"Si tú no trabajas por tus sueños, alguien te contratará para que trabajes por los suyos”

Steve Jobs

Afiliado
Dominios3Euros

Introducción

En los últimos días nos encontramos con un problema curioso en uno de nuestros sitios web desarrollados en Joomla. Cada vez que intentábamos guardar un artículo o simplemente cerrar la ventana de edición, aparecía un mensaje de error 403 Forbidden que impedía completar la acción. A simple vista podía parecer un fallo de Joomla, de permisos o incluso del formulario, pero después de revisarlo a fondo vimos que la causa era mucho más concreta y, sobre todo, más común de lo que parece.

En esta entrada os contamos cómo detectar este tipo de errores cuando Joomla no permite guardar un artículo y qué medidas tomar para solucionarlo. Y, como siempre, aunque nuestro caso tiene un origen muy definido, es posible que en otras instalaciones el fallo responda a motivos distintos. Si os ocurre algo parecido pero no encaja con lo que explicamos aquí, estaremos encantados de leerlo en los comentarios.


Cómo detectar el error

Lo primero que hicimos fue fijarnos bien en el comportamiento del sistema: el error no aparecía en todos los artículos, sino únicamente en uno muy concreto. Así que revisamos su contenido y, como suele recomendarse en estos casos, analizamos también la petición POST que Joomla envía al servidor al pulsar “Guardar” o “Cerrar”.

En esa petición se incluían todos los campos jform[...] del artículo, pero lo interesante era el volumen de información que contenía:

  • Etiquetas HTML completas
  • Múltiples <img> con rutas largas
  • Atributos con comillas
  • Títulos con caracteres especiales
  • Texto codificado para el formulario

Todo ello encajaba bastante bien con un patrón típico: mod_security —el firewall web que usan muchos hostings— suele bloquear peticiones que contienen combinaciones de HTML, comillas, rutas o parámetros extensos si considera que podrían ser peligrosas.

Para confirmar esta teoría, comparamos nuestro caso con otros problemas documentados tanto en el bug tracker de Joomla como en foros de usuarios. La coincidencia era clara: si un artículo con cierto contenido HTML generaba un 403 Forbidden al guardarse, casi siempre estaba relacionado con una regla del firewall del servidor, no con Joomla.


¿A qué se debe este problema?

El error surge porque el firewall del servidor interpreta parte de la información del artículo como una posible amenaza. No importa que el contenido sea legítimo: si coincide con una regla predefinida de mod_security, la acción se bloquea antes incluso de que Joomla llegue a procesarla.

En nuestro caso, el artículo incluía varias imágenes, atributos HTML y caracteres codificados que hacían saltar una de esas reglas. Y como consecuencia, cada intento de guardar o cerrar terminaba en el mismo mensaje: 403 Forbidden.


Solución paso a paso

Una vez detectado el origen del problema, las soluciones eran bastante claras. Estas son las que recomendamos:

1. Revisar mod_security con el hosting

La solución más efectiva es contactar con el proveedor de hosting y pedir que revisen los registros de mod_security. Ellos pueden localizar la regla exacta que se está activando y añadir una excepción para la URL de edición de artículos o para esa regla concreta.

2. Desactivar temporalmente mod_security

Muchos paneles de hosting permiten desactivarlo momentáneamente. Si al hacerlo el artículo se guarda sin problemas, ya está confirmado: el bloqueo venía del firewall.

3. Simplificar el contenido para probar

Otra prueba útil consiste en eliminar parte del contenido del artículo hasta que deje de fallar. Si sin imágenes funciona, y con imágenes vuelve a fallar, también apuntamos directamente al firewall.

4. Revisar permisos y archivo .htaccess

Aunque en nuestro caso no fue necesario, conviene comprobar que los permisos del sitio y las reglas del .htaccess no estén añadiendo restricciones adicionales.

Con cualquiera de estos pasos debería ser posible guardar el artículo sin problemas y continuar trabajando con normalidad.


Notas finales

Aunque este error concreto se debía claramente a mod_security, es importante recordar que otros factores pueden provocar fallos similares al guardar artículos en Joomla. Por ejemplo, contenido mal codificado, caracteres no permitidos en la base de datos o incluso algo tan simple como un emoji que no se puede almacenar correctamente.

En nuestro caso, el origen estaba totalmente identificado, pero si os encontráis con un problema parecido que no encaje con lo explicado aquí, no dudéis en dejar vuestro comentario. Cada instalación es un mundo, y estaríamos encantados de echaros una mano.