30 de septiembre de 2026
¿Cómo detectar y eliminar inyecciones de código o hackeos en PrestaShop?

Una tienda PrestaShop puede estar vendiendo productos por la mañana y, por la tarde, estar vendiendo también datos de tarjetas a un desconocido. Así de elegante es el desastre: no rompe siempre la vitrina; a veces se sienta detrás del mostrador, sonríe y cobra comisión.

🔐 Seguridad PrestaShop
🧹 Limpieza de malware
⚡ Respuesta ante incidentes
🛒 Ecommerce

Detectar y eliminar una inyección de código en PrestaShop no consiste en “borrar unos archivos raros” y continuar como si nada. Ojalá. Sería cómodo, casi doméstico: pasar la escoba, abrir las ventanas y listo. Pero un hackeo en una tienda online es más parecido a encontrar humedad en una pared antigua: la mancha visible es solo la parte educada del problema.

En PrestaShop, los ataques suelen esconderse en módulos vulnerables, plantillas modificadas, archivos PHP añadidos en carpetas de imágenes, tareas cron, reglas de .htaccess, usuarios administrativos creados sin permiso o fragmentos de JavaScript que roban información durante el pago. Lo moderno y lo medieval dándose la mano: una plataforma digital con catálogo, facturas y API; y, debajo, el viejo arte del intruso que fuerza una puerta mal cerrada.

Esta guía está pensada para propietarios de tiendas, desarrolladores, administradores de sistemas y agencias que necesitan una metodología seria para detectar malware en PrestaShop, limpiar inyecciones de código, recuperar la confianza y endurecer la seguridad. Sin magia. Sin rituales. Con bisturí.

Señales de que tu PrestaShop ha sido hackeado 🚨

Un hackeo no siempre llega con trompetas. A veces entra de puntillas, como un gato en una biblioteca. La tienda sigue funcionando, los pedidos entran, el panel carga… y precisamente por eso el ataque es más peligroso. La normalidad, cuando es falsa, es una alfombra perfecta para esconder polvo.

Estos son los síntomas más comunes de una tienda PrestaShop comprometida:

  • Redirecciones inesperadas a webs de apuestas, medicamentos, criptomonedas, falsos sorteos o páginas para adultos.
  • Alertas del navegador: “sitio engañoso”, “software malicioso”, “phishing” o advertencias de Google Safe Browsing.
  • Pedidos abandonados o caída de conversiones sin explicación clara, sobre todo durante el checkout.
  • Fragmentos JavaScript extraños en el pie de página, en el formulario de pago o en plantillas como header.tpl, footer.tpl o archivos del tema.
  • Archivos PHP dentro de carpetas que no deberían ejecutar PHP, como /img/, /upload/, /download/ o subdirectorios de caché.
  • Nuevos administradores en el back office o empleados con permisos excesivos.
  • Módulos desconocidos, duplicados, con nombres parecidos a módulos legítimos o instalados recientemente sin registro claro.
  • Correos enviados en masa desde el servidor, listas negras de email o quejas de clientes.
  • Cambios en archivos críticos como .htaccess, index.php, config/settings.inc.php en PrestaShop 1.6 o app/config/parameters.php en PrestaShop 1.7.
  • Picos de CPU, memoria o procesos PHP que no corresponden con el tráfico real.
  • URLs indexadas en Google con spam SEO: casinos, préstamos, réplicas de marcas, fármacos o textos en idiomas que jamás has usado.

Importante: que no veas nada raro en el frontal de la tienda no significa que todo esté limpio. Muchos ataques distinguen entre visitantes normales, bots de Google, usuarios autenticados y administradores. El malware, qué considerado, puede mostrarse solo cuando no estás mirando.

Tipos habituales de inyección de código en PrestaShop 🧬

PrestaShop, como cualquier CMS de comercio electrónico, vive rodeado de extensiones, temas, módulos de pago, integraciones logísticas y desarrollos a medida. Esa riqueza es su fuerza. También su talón de Aquiles. Una tienda limpia y actualizada puede ser robusta; una tienda con módulos abandonados es un castillo con WiFi y puente levadizo roto.

1. Skimmers de tarjetas en el checkout

Uno de los ataques más delicados en ecommerce es el skimming digital, a menudo asociado a campañas tipo Magecart. El atacante inyecta JavaScript en la página de pago para capturar datos introducidos por el cliente: nombre, dirección, teléfono, correo, número de tarjeta si se procesa en la propia página o datos del formulario antes de enviarse al proveedor de pago.

En PrestaShop puede aparecer en:

  • Plantillas del tema: .tpl, .twig en implementaciones modernas o personalizadas.
  • Hooks como displayHeader, displayFooter, paymentOptions o posiciones relacionadas con checkout.
  • Módulos de pago vulnerables o modificados.
  • Archivos JavaScript legítimos alterados.
  • Contenido guardado en base de datos: configuraciones, bloques HTML, CMS, banners o módulos de etiquetas.

La ironía es amarga: el cliente confía en la tienda precisamente en el momento más íntimo de la compra, cuando entrega sus datos. Y ahí, en ese pequeño altar de confianza, puede estar escondido el ladrón.

2. Backdoors PHP

Una backdoor es una puerta trasera que permite al atacante volver aunque hayas corregido la vulnerabilidad inicial. Suelen ser archivos PHP pequeños, ofuscados o camuflados con nombres inocentes: cache.php, class.php, image.php, config_old.php, autoloads.php. Como un documento falso en un archivo municipal: parece burocracia, pero abre cárceles.

Patrones sospechosos frecuentes:

  • eval(), assert(), base64_decode(), gzinflate(), str_rot13(), shell_exec(), passthru(), system().
  • Variables dinámicas ilegibles: ${"x".$y}.
  • Cadenas largas sin sentido aparente.
  • Código que recibe órdenes mediante $_POST, $_GET, $_COOKIE o cabeceras HTTP.
  • Archivos PHP ubicados en carpetas de imágenes o subidas.

3. Redirecciones maliciosas en .htaccess o JavaScript

Las redirecciones pueden configurarse en el servidor, en .htaccess, en Nginx, en módulos, en plantillas o directamente en la base de datos. Algunas solo se activan desde móviles, desde buscadores o desde determinados países. Es un teatro con funciones privadas.

Busca reglas sospechosas con:

  • RewriteRule hacia dominios desconocidos.
  • RewriteCond basadas en HTTP_USER_AGENT, HTTP_REFERER o dispositivos móviles.
  • JavaScript con window.location, document.location, location.href hacia URLs ajenas.
  • iframes ocultos o scripts cargados desde dominios raros.

4. Spam SEO y páginas fantasma

Este ataque no siempre busca robar tarjetas. A veces convierte tu dominio en un burdel de palabras clave: casinos, préstamos, fármacos, falsificaciones. Google indexa páginas que tú nunca creaste, los clientes ven resultados grotescos y la autoridad del dominio se degrada lentamente, como una fachada noble cubierta de carteles pegajosos.

Puede estar en:

  • Archivos generados dinámicamente.
  • Entradas en base de datos.
  • Controladores añadidos.
  • Reglas de reescritura.
  • Módulos falsos que generan contenido bajo demanda.

5. Robo de credenciales y creación de usuarios

Si el atacante consigue acceso al back office, puede instalar módulos, modificar plantillas, descargar datos de clientes o crear empleados administrativos. El contraste es brutal: una contraseña débil, quizá repetida desde hace años, puede abrir más puertas que una vulnerabilidad sofisticada.

Revisa siempre:

  • Usuarios empleados en el back office.
  • Perfiles y permisos.
  • Últimos accesos, si están disponibles.
  • Cambios recientes en módulos, plantillas y configuración.
  • Correos de recuperación de contraseña.

Qué hacer en las primeras horas: contener antes de limpiar 🧯

Cuando descubres que tu PrestaShop está infectado, la tentación es borrar archivos a lo loco. Es comprensible. También es una magnífica forma de destruir pruebas, romper la tienda y dejar la puerta abierta. El primer principio de una respuesta profesional es sencillo: contener, preservar, analizar y solo después limpiar.

  1. Activa modo mantenimiento si hay riesgo para clientes, especialmente si sospechas skimming en el pago.
  2. Deshabilita temporalmente pagos o cambia a métodos externos seguros si el checkout está comprometido.
  3. Haz una copia forense de archivos y base de datos antes de tocar nada. No para presumir de orden, sino para investigar el origen.
  4. Guarda logs del servidor: acceso, errores, PHP-FPM, Nginx/Apache, panel de hosting, WAF, CDN y logs de aplicación.
  5. Cambia credenciales críticas, pero no desde un equipo que pueda estar infectado: panel de hosting, FTP/SFTP, SSH, base de datos, back office, correo administrador, API y proveedores de pago.
  6. Bloquea accesos innecesarios: FTP antiguo, cuentas de desarrolladores que ya no trabajan contigo, usuarios genéricos y permisos excesivos.
  7. Notifica al proveedor de hosting si detectas ejecución de malware, envíos de spam o compromiso a nivel servidor.

No restaures una copia de seguridad sin investigar. Si restauras un backup infectado o vuelves a poner en producción la misma versión vulnerable, habrás hecho una coreografía perfecta: limpiar, sonreír y reinfectarte. Muy humano, por desgracia.

Cómo detectar inyecciones de código en PrestaShop 🔎

El análisis debe cubrir cuatro territorios: archivos, base de datos, logs y configuración. Si miras solo uno, el atacante te esperará en los otros tres. Como esas goteras que no caen donde está el agujero, sino dos metros más allá, con paciencia casi filosófica.

1. Identifica versión, módulos y superficie de ataque

Empieza por lo básico:

  • Versión exacta de PrestaShop.
  • Versión de PHP y servidor web.
  • Lista de módulos instalados, activos e inactivos.
  • Tema utilizado y personalizaciones.
  • Integraciones externas: ERP, marketplace, pasarelas de pago, transportistas, email marketing, feeds.
  • Fecha aproximada en la que comenzó el comportamiento anómalo.

Los incidentes públicos de seguridad en PrestaShop han demostrado algo importante: muchas intrusiones no explotan únicamente el núcleo, sino combinaciones de módulos vulnerables, configuraciones permisivas y tiendas desactualizadas. El atacante no necesita derribar una muralla si encuentra una ventana abierta con flores.

2. Compara el núcleo con una copia limpia

Descarga desde la fuente oficial la misma versión de PrestaShop que utiliza la tienda, o la versión más cercana si estás planificando actualización. Compara archivos del core con los de producción. En entornos con SSH puedes usar herramientas como diff, rsync, find o sistemas de control de versiones si el proyecto los usa.

find . -type f -mtime -14
find . -type f -name "*.php" -mtime -30
find . -type f -name "*.php" -size +200k

Estos comandos localizan archivos modificados recientemente, PHP alterados en los últimos días o ficheros PHP anormalmente grandes. No prueban por sí solos que haya malware, pero señalan huellas. Y en seguridad, una huella bien leída vale más que veinte corazonadas.

3. Busca funciones peligrosas y ofuscación

En muchos hackeos aparecen funciones legítimas usadas de forma maliciosa. No todo base64_decode es malware; algunos módulos pueden emplearlo. Pero si lo encuentras dentro de un archivo subido ayer, en una carpeta de imágenes, con variables ininteligibles, conviene levantar la ceja.

grep -RIn --include="*.php" "eval(" .
grep -RIn --include="*.php" "base64_decode" .
grep -RIn --include="*.php" "gzinflate" .
grep -RIn --include="*.php" "shell_exec" .
grep -RIn --include="*.php" "passthru" .
grep -RIn --include="*.php" "\$_POST" ./img ./upload ./download

Presta especial atención a:

  • /modules/: módulos instalados, falsos módulos, copias antiguas.
  • /themes/: plantillas alteradas, scripts inyectados.
  • /override/: modificaciones que cambian comportamiento del core.
  • /img/, /upload/, /download/: carpetas donde no deberían vivir scripts PHP ejecutables.
  • /var/cache/ en PrestaShop 1.7/8 o /cache/ en instalaciones antiguas.
  • Carpeta de administración renombrada: aunque tenga nombre secreto, también puede infectarse.

4. Revisa fechas de modificación con criterio

El tiempo también habla. Si el 14 de marzo a las 03:17 aparecen diez archivos nuevos en /modules/, tres cambios en .htaccess y un acceso POST sospechoso en los logs, quizá el universo no estaba componiendo poesía.

find . -type f -printf "%TY-%Tm-%Td %TT %p\n" | sort -r | head -100

Relaciona esa línea temporal con:

  • Instalación o actualización de módulos.
  • Accesos FTP/SFTP o SSH.
  • Cambios realizados por agencia o desarrollador.
  • Errores 500 repentinos.
  • Primeras quejas de clientes.
  • Alertas de Search Console o navegador.

5. Analiza la base de datos

No todo malware vive en archivos. En PrestaShop, una inyección puede esconderse en tablas de configuración, contenido CMS, descripciones de productos, módulos de banners, bloques HTML, hooks o entradas relacionadas con el tema.

Tablas habituales a revisar, considerando el prefijo real de tu instalación:

Zona Qué buscar Riesgo
ps_configuration Scripts, iframes, dominios externos, valores modificados recientemente Inyección global o cambios en configuración
ps_cms y ps_cms_lang HTML extraño, enlaces spam, JavaScript Spam SEO o scripts visibles
ps_product_lang Descripciones con enlaces ocultos o contenido ajeno Manipulación SEO o reputacional
ps_employee Usuarios no reconocidos, emails extraños, permisos Acceso administrativo persistente
ps_module Módulos desconocidos, nombres parecidos a módulos legítimos Backdoor disfrazada de extensión
ps_hook_module Módulos enganchados a hooks sensibles Inyección en cabecera, pie o checkout

Consultas orientativas:

SELECT name, value
FROM ps_configuration
WHERE value LIKE '%<script%'
   OR value LIKE '%iframe%'
   OR value LIKE '%base64%'
   OR value LIKE '%eval(%'
   OR value LIKE '%document.location%'
   OR value LIKE '%window.location%';

SELECT id_employee, firstname, lastname, email, active
FROM ps_employee
ORDER BY id_employee DESC;

Adapta el prefijo ps_ al de tu instalación. Y cuidado: una consulta no sustituye al juicio. Hay tiendas con píxeles de seguimiento legítimos, etiquetas de analítica y scripts de chat. La diferencia está en el origen, el contexto y la intención.

6. Revisa logs del servidor

Los logs son el diario íntimo del servidor, aunque escrito con la frialdad de un notario cansado. Ahí puedes encontrar el punto de entrada: una petición POST a un módulo vulnerable, subida de archivos, acceso a una backdoor o ejecución repetida de un script.

Busca:

  • Peticiones POST a módulos poco habituales.
  • Accesos a archivos PHP dentro de /img/, /upload/ o /download/.
  • Códigos 500 o 403 alrededor de la fecha del incidente.
  • User agents automatizados o vacíos.
  • IP repetidas con patrones de explotación.
  • Accesos al back office desde países o horarios inesperados.
  • Solicitudes con parámetros que contienen base64, cmd, eval, shell, upload.
grep "POST" access.log | grep "/modules/"
grep -Ei "base64|eval|cmd|shell|upload|passwd|wp-admin" access.log
grep -Ei "/img/.*\.php|/upload/.*\.php|/download/.*\.php" access.log

Ese último wp-admin en una tienda PrestaShop no es un error de tema. Muchos bots prueban rutas de WordPress, Joomla, Magento y lo que encuentren. Internet, ese océano lleno de peces y escáneres con hambre.

7. Escanea, pero no delegues tu criterio

Herramientas como antivirus de servidor, escáneres de malware, WAF, ImunifyAV, ClamAV, Maldet, Sucuri SiteCheck, VirusTotal para archivos concretos o soluciones comerciales pueden ayudar. También las alertas de Google Search Console y los registros del hosting.

Pero un escáner no entiende siempre la lógica de una tienda. Puede no detectar un skimmer nuevo, o marcar como sospechoso un módulo legítimo. Úsalo como linterna, no como juez.

Cómo eliminar malware e inyecciones de código en PrestaShop 🧹

La limpieza profesional no es una poda estética. Es cirugía. Si retiras solo lo visible, la infección regresa; si cortas demasiado, matas la tienda. Hay que separar tejido sano de tejido comprometido con paciencia, copia de seguridad y método.

1. Trabaja en un entorno controlado

Siempre que sea posible, clona la tienda en un entorno de staging o en una copia aislada. Limpia allí, verifica y luego despliega. Si debes intervenir en producción por urgencia, documenta cada cambio: archivo eliminado, tabla modificada, credencial rotada, módulo desactivado.

2. Sustituye archivos del core por copias limpias

Una de las estrategias más eficaces consiste en reemplazar los archivos del núcleo de PrestaShop por versiones limpias de la misma rama, conservando configuraciones, tema, módulos y archivos subidos. Esto reduce el riesgo de dejar modificaciones maliciosas en archivos del core.

No sobrescribas a ciegas:

  • Conserva archivos de configuración legítimos.
  • Revisa personalizaciones en /override/.
  • No elimines imágenes, documentos de clientes o adjuntos sin copia.
  • Valida compatibilidad antes de actualizar.

3. Elimina backdoors y archivos no autorizados

Revisa manualmente los archivos sospechosos detectados. Si no pertenecen al core, al tema o a un módulo verificado, y contienen código malicioso, elimínalos. En carpetas de subida, considera bloquear ejecución PHP mediante configuración del servidor.

Ejemplo para Apache en una carpeta de subidas, según compatibilidad del hosting:

<FilesMatch "\.php$">
  Require all denied
</FilesMatch>

En Nginx, la protección debe definirse en el bloque de servidor, impidiendo ejecución PHP en directorios como /img/, /upload/ o /download/. Aquí conviene tocar con guantes: una regla mal puesta puede romper imágenes, descargas o el panel.

4. Limpia plantillas y JavaScript

Busca scripts añadidos en:

  • /themes/tu-tema/templates/
  • /themes/tu-tema/assets/js/
  • header.tpl, footer.tpl, checkout.tpl, order-confirmation.tpl
  • Archivos relacionados con módulos de pago.
  • Bloques HTML gestionados desde el panel.

Dominios externos desconocidos, scripts ofuscados o fragmentos cargados solo en checkout deben considerarse de alto riesgo. Contrasta con el código original del tema y con repositorios internos si existen.

5. Audita módulos uno por uno

Los módulos son el mercado persa de cualquier PrestaShop: hay joyas, herramientas útiles, reliquias polvorientas y algún cuchillo envuelto en terciopelo. Revisa cada módulo:

  • ¿Procede de PrestaShop Addons, del proveedor oficial o de un desarrollador fiable?
  • ¿Tiene actualizaciones recientes?
  • ¿Es compatible con tu versión de PrestaShop y PHP?
  • ¿Hay vulnerabilidades publicadas?
  • ¿Está activo aunque ya no se use?
  • ¿Contiene archivos modificados en la fecha del ataque?

Desinstala y elimina módulos innecesarios. Desactivar no siempre basta: un archivo vulnerable puede seguir accesible por URL aunque el módulo no esté en uso.

6. Limpia la base de datos

Elimina scripts, iframes, enlaces spam y usuarios fraudulentos. Hazlo con copia previa y preferiblemente mediante consultas controladas o edición manual desde una herramienta segura. No ejecutes “buscar y reemplazar” como quien dispara perdigones en una cristalería.

Acciones típicas:

  • Eliminar empleados no reconocidos.
  • Cambiar contraseñas de todos los administradores.
  • Revisar permisos y perfiles.
  • Limpiar configuraciones contaminadas.
  • Revisar contenidos CMS y productos con enlaces ocultos.
  • Verificar hooks y módulos asociados.

7. Regenera caché y archivos temporales

Una vez eliminado el código malicioso, limpia cachés de PrestaShop, Symfony, Smarty, CDN y navegador. En PrestaShop 1.7/8, revisa /var/cache/. En versiones antiguas, /cache/ y la caché de Smarty pueden conservar compilaciones con código inyectado.

También conviene regenerar .htaccess desde el back office si está alterado, siempre verificando reglas personalizadas legítimas.

8. Rota todas las credenciales

Después de limpiar, cambia:

  • Contraseñas de empleados PrestaShop.
  • Base de datos.
  • FTP/SFTP/SSH.
  • Panel de hosting.
  • Correo de administración.
  • Claves API.
  • Credenciales de módulos externos.
  • Accesos de agencia, freelancers y antiguos empleados.

Si cambias contraseñas antes de eliminar backdoors, el atacante puede capturarlas otra vez. Si limpias sin cambiar contraseñas, puede entrar por la puerta principal. Antítesis simple, daño enorme.

9. Actualiza PrestaShop, módulos y tema

Actualiza a una versión soportada y estable para tu proyecto. PrestaShop 1.6, aunque todavía sobreviva en muchas tiendas como esos electrodomésticos antiguos que nadie se atreve a desconectar, ya no es una base razonable para un ecommerce que procesa pedidos reales sin medidas compensatorias serias.

Prioriza:

  • Actualizaciones de seguridad del núcleo.
  • Módulos de pago.
  • Módulos de subida de archivos, formularios, exportaciones e importaciones.
  • Tema y librerías JavaScript.
  • Versión de PHP compatible y mantenida.

Consejo profesional: antes de actualizar en producción, prueba en staging con una copia actual de archivos y base de datos. Revisa checkout, impuestos, transportistas, emails, URLs, multitienda si aplica y módulos críticos. La seguridad sin continuidad de negocio es heroísmo mal facturado.

Después de limpiar: reputación, SEO y confianza del cliente 🌱

Eliminar el malware no siempre termina el incidente. Queda la parte menos visible: recuperar la confianza de navegadores, buscadores, bancos, pasarelas de pago y clientes. La seguridad técnica y la reputación digital son dos relojes distintos; uno puede arreglarse en horas, el otro tarda días o semanas en volver a marcar bien.

Revisa Google Search Console

Si Google marcó el sitio como peligroso o detectó spam, entra en Search Console y revisa:

  • Problemas de seguridad.
  • Acciones manuales.
  • URLs indexadas extrañas.
  • Sitemaps enviados.
  • Cobertura e indexación.

Después de limpiar, solicita revisión. Explica de forma clara qué se detectó, qué se eliminó y qué medidas preventivas se aplicaron. No escribas una novela, aunque ganas no falten.

Comprueba listas negras

Consulta servicios de reputación y seguridad como Google Safe Browsing, navegadores, antivirus comerciales, proveedores de correo y listas negras de spam si hubo envío masivo. Algunas alertas se resuelven automáticamente tras rastreos posteriores; otras requieren solicitud manual.

Valida pagos y cumplimiento

Si hubo sospecha de skimming o exposición de datos de pago, la situación es seria. Contacta con la pasarela de pago, revisa obligaciones contractuales y legales, y considera asesoría especializada. Dependiendo del país, tipo de datos y alcance, puede existir obligación de notificación a autoridades o afectados.

Una tienda online no solo custodia productos. Custodia confianza. Y la confianza, a diferencia del stock, no se repone con un proveedor urgente.

Monitoriza durante al menos 30 días

Tras la limpieza, observa:

  • Nuevos archivos creados.
  • Logs de acceso a rutas sospechosas.
  • Intentos de login al back office.
  • Alertas de integridad.
  • Errores PHP.
  • Tráfico orgánico y conversiones.
  • Quejas de clientes o mensajes extraños.

Si el atacante intenta volver a una backdoor eliminada, los logs pueden revelar URLs, IPs y patrones útiles para confirmar que la infección ya no responde.

Cómo prevenir nuevos hackeos en PrestaShop 🛡️

La prevención no es un producto que se instala; es una disciplina. Aburrida a veces, sí. Pero también lo es lavarse los dientes, y nadie sensato lo sustituye por una cirugía mensual.

1. Mantén PrestaShop y módulos actualizados

Planifica actualizaciones periódicas. No esperes a que un módulo vulnerable aparezca en foros de seguridad con instrucciones de explotación. Mantén un inventario de extensiones y elimina lo que no uses.

2. Usa solo módulos fiables

Evita módulos descargados de sitios dudosos, versiones “nulled” o paquetes compartidos en foros. Un módulo pirateado puede salir gratis y costar una base de datos entera. La ganga, ese perfume barato que a veces huele a gasolina.

3. Refuerza el back office

  • Usa una URL de administración no predecible, aunque no dependas solo de eso.
  • Activa doble factor de autenticación si tu entorno lo permite mediante módulo o capa externa.
  • Limita acceso por IP cuando sea viable.
  • Aplica contraseñas únicas y robustas.
  • Elimina usuarios antiguos.
  • Asigna permisos mínimos necesarios.

4. Protege el servidor

  • Usa SFTP/SSH, no FTP plano.
  • Configura permisos correctos de archivos y carpetas.
  • Deshabilita ejecución PHP en directorios de subida.
  • Mantén PHP en versión soportada.
  • Activa firewall de aplicación web o reglas WAF.
  • Configura backups automáticos, externos y verificables.
  • Separa entornos: producción, staging y desarrollo.

5. Implementa cabeceras de seguridad

Las cabeceras HTTP no sustituyen la limpieza de código, pero reducen riesgos. Considera:

  • Content-Security-Policy para controlar scripts permitidos.
  • X-Frame-Options o directivas equivalentes en CSP.
  • X-Content-Type-Options: nosniff.
  • Referrer-Policy.
  • Strict-Transport-Security si todo el sitio funciona correctamente bajo HTTPS.

La Content Security Policy merece especial atención en ecommerce porque puede bloquear scripts no autorizados. Eso sí: implantarla en una tienda con píxeles, pasarelas, chat, analítica y módulos varios requiere pruebas. Una CSP mal configurada puede proteger tanto que impida comprar. Seguridad monástica, ventas cero.

6. Vigila integridad de archivos

Configura alertas cuando cambien archivos sensibles. Herramientas de monitorización, Git, scripts de integridad o soluciones del hosting pueden avisarte si aparecen PHP en carpetas de imágenes o si se modifica un archivo del tema fuera del flujo normal de despliegue.

7. Backups útiles, no decorativos

Un backup que nunca se prueba es una superstición con extensión .zip. Asegúrate de que tus copias:

  • Se generan automáticamente.
  • Se almacenan fuera del servidor principal.
  • Incluyen archivos y base de datos.
  • Tienen retención suficiente.
  • Se pueden restaurar en un entorno de prueba.
  • No son accesibles públicamente por URL.

8. Monitoriza SEO y seguridad

Integra revisiones periódicas:

  • Google Search Console.
  • Escaneo de malware externo.
  • Alertas de uptime.
  • Monitorización de cambios DNS.
  • Revisión de logs.
  • Auditoría de módulos.
  • Pruebas de checkout.

Checklist rápida de seguridad para PrestaShop ✅

  • PrestaShop actualizado a una versión soportada.
  • Módulos innecesarios eliminados, no solo desactivados.
  • Back office protegido con contraseñas robustas y, si es posible, 2FA.
  • Accesos FTP sustituidos por SFTP/SSH.
  • Permisos de archivos revisados.
  • Ejecución PHP bloqueada en directorios de subida.
  • Backups externos probados.
  • WAF o reglas de seguridad activas.
  • Search Console configurado.
  • Monitorización de cambios de archivos.
  • Pasarelas de pago y módulos críticos al día.

Errores frecuentes al limpiar un PrestaShop infectado ⚠️

Hay errores que se repiten con una fidelidad casi conmovedora. Los comete el propietario desesperado, el técnico con prisa y a veces la agencia que “ya ha visto esto mil veces”. Precisamente por eso conviene nombrarlos.

Error Por qué es peligroso Qué hacer en su lugar
Borrar archivos sospechosos sin copia Puedes perder pruebas, romper funcionalidades o eliminar archivos legítimos Crear backup, documentar y analizar antes de eliminar
Restaurar un backup antiguo sin revisar Puede contener la misma backdoor o vulnerabilidad Escanear backup y actualizar antes de publicar
Limpiar solo archivos La inyección puede estar en base de datos Revisar configuración, CMS, productos, hooks y empleados
Cambiar contraseñas desde un equipo inseguro Un malware local puede capturarlas Usar dispositivo limpio y gestor de contraseñas
No actualizar módulos vulnerables La reinfección puede ocurrir en minutos Actualizar, reemplazar o eliminar el módulo afectado
Ignorar logs No sabrás cómo entraron ni si han vuelto Analizar accesos, errores y actividad administrativa
Creer que el antivirus lo resuelve todo Puede dejar skimmers o backdoors no detectadas Combinar herramientas automáticas con revisión manual experta

Un método profesional de auditoría: de la sospecha a la certeza 🧭

Si tuviera que resumir una intervención seria en PrestaShop, usaría esta secuencia. No es teatral, no promete milagros en diez minutos, no cabe en un vídeo con música épica. Funciona precisamente por eso.

  1. Recepción del incidente: síntomas, fechas, alertas, cambios recientes.
  2. Contención: mantenimiento, pagos, accesos, preservación de evidencias.
  3. Backup forense: archivos, base de datos, logs, configuración.
  4. Inventario: versión, módulos, tema, integraciones, usuarios.
  5. Análisis de archivos: fechas, hashes, comparación con core limpio, búsqueda de ofuscación.
  6. Análisis de base de datos: scripts, iframes, usuarios, hooks, spam.
  7. Análisis de logs: punto de entrada, IPs, rutas explotadas, actividad posterior.
  8. Limpieza: eliminación de malware, sustitución de core, reparación de plantillas, depuración de base de datos.
  9. Cierre de vulnerabilidad: actualización, eliminación de módulos, hardening del servidor.
  10. Validación: checkout, pedidos, SEO, escáneres, logs, rendimiento.
  11. Monitorización: vigilancia intensiva durante las semanas siguientes.
  12. Informe: qué ocurrió, qué se hizo, qué queda por mejorar.

Una vez, revisando una tienda infectada de madrugada, encontré una backdoor escondida con el nombre readme.php. Me hizo gracia, lo admito. Un atacante con vocación literaria. El archivo no explicaba nada, por supuesto; solo obedecía comandos remotos. Hay nombres que prometen manuales y entregan ruinas.

Preguntas frecuentes sobre hackeos en PrestaShop ❓

¿Cómo sé si mi PrestaShop tiene malware?

Algunas señales son redirecciones extrañas, alertas de Google, archivos PHP desconocidos, scripts sospechosos en checkout, usuarios administradores no reconocidos, spam SEO indexado o picos anómalos de recursos. La confirmación requiere revisar archivos, base de datos, logs y módulos.

¿Puedo limpiar PrestaShop solo con un plugin o escáner?

Un escáner ayuda, pero no basta en incidentes serios. Puede detectar firmas conocidas, pero no siempre encuentra backdoors personalizadas, skimmers recientes o inyecciones en base de datos. La limpieza fiable combina herramientas automáticas con análisis manual.

¿Qué carpetas de PrestaShop suelen infectarse?

Las más revisadas son /modules/, /themes/, /override/, /img/, /upload/, /download/, /var/cache/ y la carpeta de administración. También hay que revisar .htaccess y archivos de configuración.

¿Es seguro restaurar una copia de seguridad?

Sí, si sabes que es anterior al compromiso y si corriges la vulnerabilidad que permitió el ataque. Restaurar sin analizar puede reintroducir malware o dejar activa la misma puerta de entrada.

¿Un PrestaShop hackeado afecta al SEO?

Sí. Puede provocar alertas de seguridad, pérdida de posiciones, indexación de spam, caída de tráfico orgánico y desconfianza de usuarios. Tras limpiar, conviene revisar Google Search Console, solicitar revisión si hubo penalización y eliminar URLs maliciosas del índice.

¿Qué hago si han robado datos de clientes?

Debes evaluar el alcance, preservar evidencias, contactar con proveedores implicados y revisar obligaciones legales aplicables. Si hay sospecha de datos personales o datos de pago comprometidos, conviene contar con asesoría legal y técnica especializada.

¿Cada cuánto debo auditar la seguridad de mi tienda?

Como mínimo, después de cada actualización importante, instalación de módulos o cambio de servidor. Para tiendas con volumen significativo, una revisión mensual de módulos, logs, backups y alertas de seguridad es una práctica prudente.

La última puerta que conviene cerrar 🔐

Un hackeo en PrestaShop no es solo un problema técnico. Es una interrupción de la confianza, una grieta en ese pacto silencioso entre tienda y comprador: “tú me das tus datos, yo los protejo”. Cuando ese pacto se rompe, no basta con borrar un archivo llamado cache_old.php y respirar aliviado.

Detectar y eliminar inyecciones de código exige método, calma y cierta desconfianza saludable. Hay que mirar donde nadie mira: en módulos olvidados, en hooks discretos, en reglas de reescritura, en tablas de configuración, en logs que parecen aburridos hasta que cuentan la verdad. Lo visible grita; lo importante suele susurrar.

La buena noticia es que una tienda PrestaShop puede recuperarse, endurecerse y volver a vender con seguridad. Pero debe salir del incidente más sabia que antes. Actualizada. Monitorizada. Con backups reales. Con menos módulos innecesarios. Con accesos bien gobernados. Porque en comercio electrónico, la seguridad no es el candado de la puerta al cerrar la noche; es la arquitectura entera del edificio.

Y sí, mantenerla requiere trabajo. Pero siempre será menos trabajo que explicar a tus clientes por qué aquel formulario de pago, tan pulcro y tan blanco, escondía una sombra bajo el botón de comprar.

Deja una respuesta