Código malicioso en el sitio: cómo saber que te han infectado
«El sitio está infectado» significa que ha aparecido código ajeno en él: en los archivos, en la base de datos o en la plantilla. Funciona en silencio y, por lo general, no para ti, sino para los visitantes y los robots de búsqueda, mostrándoles lo que tú no publicaste.
Una analogía para el dueño del sitio
Es como si un extraño se hubiera instalado en el almacén de tu tienda. No rompe el escaparate, porque no le conviene que te des cuenta. Usa tu dirección sin que lo notes y hace una copia de la llave para volver después de que cambies la cerradura. Por eso, limpiar sin buscar el punto de entrada suele terminar en una nueva infección.
Señales visibles desde fuera
| Lo que notas | Lo que suele haber detrás |
|---|---|
| Un resultado de búsqueda redirige a un sitio ajeno, pero la visita directa no | Redirección condicional según el origen de la visita |
| En los resultados de búsqueda, tus páginas tienen títulos ajenos: farmacias, casinos | Cloaking: al robot se le muestra una página distinta a la que ve la persona |
| Caída brusca del tráfico sin cambios en las posiciones | Advertencia del navegador «el sitio puede ser dañino» al entrar |
| Los correos del dominio llegan masivamente a spam | El dominio ha entrado en listas negras por envío de spam |
| Archivos y administradores nuevos que tú no creaste | Backdoor y cuenta para volver a entrar |
Los buscadores marcan estos sitios, reducen la confianza en el dominio y eliminan del índice las páginas infectadas; con inyecciones de spam también pueden aplicarse sanciones manuales. Recuperar las posiciones lleva semanas: primero, los buscadores y los servicios de reputación deben confirmar que el sitio está limpio.
Cómo se ve en el informe de Security Shield
Si se detecta al menos una señal de infección, el informe no empieza con una puntuación, sino con el veredicto «Infectado», con el semáforo en rojo. Desde fuera, el escáner detecta JavaScript ofuscado, scripts de minería, frames invisibles, interceptación de campos de formularios, enlaces de spam ocultos, señales de cloaking y redirecciones, así como dominios en listas negras.
Una parte de la infección, por su naturaleza, no se ve desde fuera: web shell en un archivo, archivos del núcleo del CMS modificados, archivo PHP en el directorio uploads, reglas en .htaccess, código en la base de datos, administrador ajeno. Esto lo detecta un agente de servidor opcional: un script que colocas en tu hosting. Encontrarás más detalles en el artículo sobre Security Shield.
No basta con eliminar los archivos encontrados: si el punto de entrada sigue abierto, el código volverá en cuestión de horas. Busca no solo el archivo en sí, sino también cómo llegó: un plugin desactualizado, una contraseña de FTP robada, un sitio ajeno en la misma cuenta de hosting.
Qué hacer paso a paso
- Haz una copia «tal cual». Los archivos y la base de datos en su estado actual sirven como evidencia y como seguro si la limpieza no sale bien.
- Encuentra lo modificado. Ordena los archivos por fecha de modificación y compara el núcleo del CMS y los plugins con las versiones oficiales.
- Restaura las versiones limpias. Reinstala el núcleo y las extensiones sobreescribiéndolos, y limpia la plantilla y uploads de forma selectiva.
- Actualiza el CMS, el tema y los plugins, y elimina los que no uses y los que ya no estén en el catálogo oficial.
- Cambia todas las contraseñas y claves: administradores, base de datos, FTP y SSH, panel del hosting, correo. Revisa los administradores y las tareas programadas.
- Vuelve a escanear: el veredicto debe cambiar y los hallazgos con señales de infección deben desaparecer.
- Envía una solicitud de revisión a los servicios de reputación y en el panel para webmasters: la marca no se elimina sola.
Cómo evitar una nueva infección
Las actualizaciones y un número mínimo de plugins protegen más que un «antivirus para el sitio» de pago. Mantén permisos de archivos estrictos, prohíbe la ejecución de PHP en el directorio uploads y activa la verificación en dos pasos en el panel de administración. Después de limpiar, revisa las páginas con SEO Audit, y las publicaciones con la indexación.