Errores y problemas

Subir SVG sin revisar compromete la seguridad en WordPress

Permitir SVG en WordPress sin control puede abrir la puerta a código malicioso, XSS, enlaces externos o recursos incrustados. Aunque son útiles para logotipos e iconos por su calidad y ligereza, un SVG es un archivo XML y debe tratarse como contenido potencialmente ejecutable.

Los problemas con SVG y seguridad se evitan al sanear los archivos, limitar quién puede cargarlos y elegir una inserción segura.

Índice

Anuncio

Revisa el SVG antes de permitir su subida

Un SVG seguro debe contener únicamente el dibujo necesario, sin scripts, eventos, objetos, entidades XML ni referencias remotas.

WordPress bloquea los SVG por defecto porque permitir la extensión no equivale a revisar el contenido: la validación confirma el formato y la sanitización elimina elementos peligrosos.

Elementos que deben desaparecer

Revisa el archivo con un editor de texto y elimina cualquier código que no sea imprescindible para dibujar el gráfico.

Enlaces externos que no debes aceptar

Busca href, xlink:href, src y url(), porque un SVG no debería descargar imágenes, fuentes o estilos desde dominios externos para mostrarse correctamente.

Un SVG que necesita conectarse a otra web antes de mostrarse no es un archivo listo para publicar: necesita una revisión técnica.

Prueba visual tras limpiar el archivo

Sanea el SVG con una herramienta mantenida, reduce código sobrante con SVGO y pruébalo en staging mediante img o CSS; revisa su aspecto, el viewBox, las peticiones de red y el texto alternativo.

Los riesgos no son todos iguales. Un caso de XSS almacenado ocurre si un atacante sube un SVG con JavaScript o atributos onload y ese contenido se inserta posteriormente como SVG inline o se abre en un contexto que permite su ejecución. Las referencias a imágenes, fuentes o estilos remotos pueden revelar la IP, el navegador y la página desde la que se carga el recurso.

También existe el phishing visual: un archivo puede imitar un botón, un formulario de acceso o un aviso de seguridad para inducir clics. DOCTYPE y las entidades XML deben eliminarse porque algunos analizadores, conversores o procesos automatizados pueden intentar resolverlas y consumir recursos o acceder a referencias no deseadas.

Subir SVG sin revisar compromete la seguridad en WordPress

No actives SVG para todos

Si autores, clientes, colaboradores o cuentas temporales acceden a la biblioteca multimedia, no habilites SVG para todos: el principio de mínimo privilegio exige que cada cuenta tenga solo los permisos necesarios.

Un XSS almacenado puede activarse cuando un administrador abre un archivo o contenido comprometido, por lo que toda subida debe tratarse como no fiable hasta validarla y sanearla.

Roles que pueden cargar SVG

Permite SVG solo a administradores y, si es necesario, a perfiles técnicos internos verificados; revisa periódicamente cuentas antiguas, permisos puntuales y credenciales compartidas.

Rol o situación¿Permitir SVG?Control mínimo
Administrador técnicoSanitización y revisión previa
Diseñador interno verificadoSí, con revisiónCarpeta o flujo de aprobación
Editor, autor o clienteNoPNG, WebP o envío al equipo técnico
Usuario sin verificarNoBloqueo de subida y revisión de cuenta

El error de añadir solo el MIME

Para habilitar SVG no basta con añadir image/svg+xml a los tipos MIME: el permiso debe estar separado de la sanitización de SVG. Un plugin fiable puede aceptar el formato, limpiar etiquetas y atributos peligrosos y restringir la carga a administradores; antes de instalarlo, conviene comprobar que se mantiene, explica qué elementos elimina y funciona con la versión actual de WordPress. En código personalizado, el filtro de tipos MIME debe aplicarse solo tras verificar una capacidad específica con current_user_can() y complementarse con un filtro previo de subida que ejecute la validación de archivos y el sanitizador.

Plugin, código o bloquear SVG

Un plugin puede ser adecuado si tiene mantenimiento activo, sanea el contenido y limita capacidades; el código personalizado solo sirve si también mantiene validación, sanitización y permisos.

Para un sitio corporativo con entre 1 y 3 personas de plena confianza gestionando medios, un sanitizador actualizado y subida limitada suele ser suficiente. Para una plataforma con decenas de cuentas externas, el coste de revisar cada archivo suele superar el beneficio de usar SVG.
🛒 Producto recomendado

Una llave de seguridad FIDO2 ayuda a proteger la cuenta de administrador que aprueba y sube archivos sensibles. Añade una segunda prueba física al acceso, incluso si una contraseña se filtra.

Ver en Amazon →

Así, los permisos de usuario impiden que autores o clientes conviertan la biblioteca multimedia de WordPress en un canal de archivos no revisados.

Anuncio

Inserta SVG con img o CSS y evita object

Para logotipos e ilustraciones sin interacción, usa <img> o background-image en CSS después de sanear el archivo.

El SVG inline ofrece más control visual, pero aumenta la superficie de exposición; object e iframe cargan el SVG como documento separado y deben evitarse.

Comparativa de métodos de inserción

MétodoRiesgo tras saneamientoUso recomendado
imgBajoLogos e ilustraciones con texto alternativo
CSS background-imageBajoGráficos decorativos sin contenido textual
SVG inlineMedioIconos propios auditados que requieren estilos
object o iframeAltoEvitar en webs corporativas habituales

Accesibilidad según el uso del archivo

Un logotipo con img necesita texto alternativo identificativo, mientras que un icono decorativo puede usar un texto alternativo vacío para no repetir información al lector de pantalla.

Qué no resuelve una CSP

Una Content Security Policy limita los orígenes desde los que el navegador carga recursos, pero no limpia el SVG ni convierte un archivo dudoso en seguro; úsala como barrera adicional y pruébala en staging.

Una CSP útil debe expresarse como cabecera y adaptarse a los recursos reales del sitio. Para una web que sirve SVG saneados desde su propio dominio, una base prudente puede incluir default-src 'self', img-src 'self' data:, object-src 'none', frame-src 'none', connect-src 'self' y base-uri 'self'; si no se necesita JavaScript inline, script-src 'self' evita ampliarlo innecesariamente. object-src 'none' bloquea la carga mediante object y embed, mientras que connect-src limita conexiones iniciadas desde contenido activo.

La política debe probarse primero en modo de solo informe o en staging, ya que una directiva demasiado restrictiva puede romper fuentes, analítica, vídeos o recursos legítimos.

Evita XSS con saneamiento, pruebas y copias

El flujo seguro debe ser siempre el mismo: recibir, inspeccionar, sanear, reducir, probar y publicar, sin excepciones por urgencia.

Las copias de seguridad son el último recurso: conserva archivos y base de datos verificados, y prueba la restauración periódicamente en un entorno aislado.

Flujo reproducible para cada archivo

  1. Recibe el SVG desde una fuente identificada y guarda el original fuera de la web pública.
  2. Inspecciona el XML y elimina scripts, eventos, foreignObject, entidades y enlaces externos.
  3. Sanea el archivo con una herramienta mantenida y reduce código sobrante con SVGO.
  4. Prueba el SVG en staging mediante img o CSS, no mediante object.
  5. Revisa el resultado visible, las peticiones de red y el texto alternativo antes de publicarlo.

Señales de que debes investigar

Investiga SVG inusualmente pesados, con texto ilegible, peticiones a dominios desconocidos, redirecciones o cambios inesperados en usuarios; si sospechas de XSS, retira el archivo y revisa las sesiones con privilegios.

Qué hacer ahora para usar SVG con control

Permite SVG solo a uno o dos administradores técnicos, aplica sanitización y muéstralos mediante img; si no puedes explicar quién lo subió, de dónde procede y cómo se probó, no debe publicarse.

No conviene habilitar SVG si tu sitio solo necesita fotografías o gráficos que no deban escalarse, si muchas personas no fiables suben medios o si nadie puede revisar los archivos antes de publicarlos. En esos casos, PNG o WebP reducen la exposición y simplifican el mantenimiento.

Anuncio

Preguntas y respuestas

¿Es seguro subir SVG a WordPress?

Sí, si se sanea antes de subirlo, procede de una fuente identificada y solo lo cargan perfiles técnicos de confianza.

¿Por qué WordPress bloquea los SVG?

Porque pueden incluir XML activo, JavaScript o atributos de evento que faciliten XSS.

¿Qué debo borrar de un archivo SVG?

Borra script, atributos on*, foreignObject, iframe, entidades XML y enlaces externos innecesarios.

¿Qué método es más seguro para mostrar SVG?

img suele ser la opción más prudente para SVG ya saneados; CSS encaja en elementos decorativos.

¿Un plugin para SVG protege todos los archivos?

No siempre: comprueba que sanea el contenido, limita roles, está actualizado y es compatible con tu WordPress.

¿La CSP evita ataques desde SVG?

No sustituye la sanitización; solo limita recursos, scripts, conexiones y marcos no autorizados.

¿Los SVG pueden afectar al RGPD?

Sí, si cargan recursos externos que envían datos de navegación a terceros; elimina esas referencias y revisa el cumplimiento del RGPD.

RESUMIR CON IA: Extrae lo importante

Comparte este artículo:

Josu Barrios

Josu Barrios

Somos especialistas en mantenimiento WordPress para empresas, profesionales y tiendas online. Contamos con experiencia en seguridad web, optimización de rendimiento, actualizaciones, copias de seguridad y resolución de incidencias técnicas, ayudando a que cada sitio funcione de forma rápida, estable y protegida. Nuestro enfoque combina soporte técnico profesional, buenas prácticas de seguridad y seguimiento continuo para ofrecer un servicio fiable, transparente y orientado a resultados reales.