🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo detectar y eliminar inyecciones SQL en PrestaShop

Actualizado el 3 de febrero de 2026

¿Qué es una inyección SQL y por qué es peligrosa en PrestaShop?

Una inyección SQL es un tipo de ataque informático donde un ciberdelincuente introduce código malicioso en las consultas que tu tienda envía a la base de datos. Piensa en ello como si alguien pudiera escribir instrucciones directamente en la "cocina" de tu web, donde se guardan todos los datos importantes: clientes, pedidos, contraseñas, precios, etc.

En el contexto de PrestaShop, una inyección SQL puede permitir al atacante robar información de tus clientes (nombres, direcciones, tarjetas de crédito), modificar precios, crear cuentas de administrador falsas o incluso borrar toda tu base de datos. Es uno de los ataques más comunes en el comercio electrónico y, si no se detecta a tiempo, puede arruinar tu negocio y tu reputación.

[WARNING] Si tu tienda PrestaShop ha sido hackeada, actúa de inmediato. Cada minuto que pasa, el atacante puede estar extrayendo datos de tus clientes o dañando tu base de datos.


Síntomas de que tu PrestaShop tiene una inyección SQL

Antes de aprender a eliminar el malware, debes saber reconocer las señales de que tu tienda está comprometida. Estos son los síntomas más comunes:

  • Páginas que no cargan correctamente o muestran errores de base de datos.
  • Productos o precios modificados sin que tú los hayas cambiado.
  • Cuentas de administrador nuevas que no reconoces.
  • Redirecciones extrañas a sitios web de terceros (generalmente de apuestas, farmacias o contenido adulto).
  • Aumento repentino del tráfico desde países que no son tu mercado objetivo.
  • Archivos .php extraños en carpetas de módulos, temas o en la raíz de tu instalación.
  • Consultas lentas o tiempo de carga excesivo en el panel de administración.
  • Mensajes de error SQL visibles para los usuarios en la tienda.

Si detectas al menos dos de estos síntomas, es muy probable que tu tienda tenga una inyección SQL activa.

[INFO] No todos los errores de base de datos son producto de un ataque. A veces, una actualización fallida o un módulo incompatible pueden causar problemas similares. Pero si ves varios síntomas juntos, ponte en alerta.


Paso 1: Aislar tu tienda para evitar daños mayores

Antes de empezar a limpiar, debes evitar que el ataque se propague o que el atacante siga teniendo acceso. Sigue estos pasos en orden:

  1. Pon tu tienda en modo mantenimiento. Ve a Parámetros de la tienda > Mantenimiento y activa la opción "Sí" para que los clientes no puedan acceder.
  2. Cambia todas las contraseñas. Esto incluye:
    • Contraseña del administrador de PrestaShop.
    • Contraseña de la base de datos MySQL.
    • Contraseña de FTP/SFTP.
    • Contraseña del panel de control de hosting (cPanel, Syspanel, Plesk, etc.).
  3. Desconecta los módulos de pago temporalmente. Si el atacante tiene acceso a tu pasarela de pago, podría desviar pagos. Ve a Módulos > Módulos instalados y desactiva todos los relacionados con pagos.
  4. Haz una copia de seguridad completa. Antes de tocar nada, descarga una copia de seguridad de tu base de datos y todos los archivos de la tienda. Esto te servirá como referencia y, en caso de error, podrás restaurar el estado actual.

[TIP] Si usas Syspanel (el panel de control de HestiaCP, accesible por el puerto 2106), puedes hacer la copia de seguridad desde la sección "Backup". También es recomendable descargar una copia local a tu ordenador.


Paso 2: Identificar archivos infectados con inyección SQL

Las inyecciones SQL en PrestaShop suelen esconderse en archivos PHP, especialmente en:

  • Módulos (carpeta /modules/)
  • Temas (carpeta /themes/)
  • Archivos de configuración como config/defines.inc.php
  • Archivos de la raíz como index.php, ajax.php, etc.

Herramientas para escanear tu tienda

Puedes usar dos métodos principales:

Método 1: Escáner de seguridad online (recomendado para principiantes)

Existen herramientas online gratuitas que analizan tu tienda en busca de malware y vulnerabilidades. Las más conocidas son:

  • PrestaShop Security Scanner (oficial de PrestaShop)
  • SiteCheck de Sucuri
  • Quttera

Solo necesitas ingresar la URL de tu tienda y la herramienta te mostrará si hay archivos sospechosos.

Método 2: Revisión manual con FTP

Si tienes acceso a los archivos por FTP o a través del explorador de archivos de tu hosting, puedes buscar manualmente archivos sospechosos. Presta atención a:

  • Archivos con nombres extraños como hack.php, shell.php, cmd.php, backdoor.php.
  • Archivos con fechas de modificación recientes que no coincidan con tus actualizaciones.
  • Archivos PHP que contengan funciones peligrosas como eval(), base64_decode(), system(), exec(), passthru(), preg_replace() con el modificador /e.

[WARNING] Si encuentras un archivo que contiene base64_decode seguido de un texto largo y sin sentido, es casi seguro que es malware. No lo abras ni lo ejecutes, simplemente anota su ruta para eliminarlo después.


Paso 3: Eliminar la inyección SQL de la base de datos

Una vez identificados los archivos infectados, el siguiente paso es limpiar la base de datos. El atacante suele dejar código malicioso en campos como:

  • Descripciones de productos
  • Módulos de texto personalizados
  • Campos de configuración de temas
  • Tablas de correo electrónico o mensajes

Cómo limpiar la base de datos paso a paso

  1. Accede a tu base de datos. Puedes hacerlo desde:
    • phpMyAdmin (la herramienta más común).
    • Syspanel (HestiaCP, puerto 2106) > Base de datos > phpMyAdmin.
  2. Exporta una copia de seguridad de la base de datos antes de modificarla. Ve a la pestaña "Exportar" y descarga el archivo SQL.
  3. Busca patrones sospechosos. En phpMyAdmin, usa la función "Buscar" (en la pestaña "Buscar" o "Search") para buscar en todas las tablas términos como:
    • <script>
    • eval(base64_decode
    • iframe
    • document.write
    • window.location
  4. Revisa los resultados. Si encuentras contenido extraño en campos de descripciones o configuraciones, anota la tabla y el campo afectado.
  5. Limpia los campos infectados. Puedes hacerlo de dos formas:
    • Manualmente: Edita cada registro y elimina el código malicioso.
    • Con una consulta SQL: Si sabes qué patrón eliminar, puedes ejecutar una consulta como:
      UPDATE ps_product_lang SET description = REPLACE(description, '<script>alert(1)</script>', '');
      
      Nota: Ajusta el nombre de la tabla y el campo según tu caso.
  6. Verifica que no haya tablas nuevas. A veces los atacantes crean tablas con nombres como _hack, _tmp, _backup para almacenar datos robados. Si ves tablas que no reconoces, elimínalas con cuidado.

[INFO] Si no te sientes seguro editando la base de datos directamente, contrata a un profesional. Un error puede dejar tu tienda inservible.


Paso 4: Eliminar archivos maliciosos del servidor

Una vez limpia la base de datos, toca eliminar los archivos infectados. Sigue estos pasos:

  1. Conéctate por FTP a tu servidor con las credenciales nuevas que creaste en el paso 1.
  2. Navega a la carpeta raíz de tu PrestaShop (normalmente public_html o www).
  3. Elimina los archivos sospechosos que identificaste en el paso 2. No los renombres, elimínalos completamente.
  4. Revisa la carpeta de módulos. Los módulos desactualizados o nulled (pirateados) son la puerta de entrada más común. Desinstala y elimina cualquier módulo que no uses o que sea de dudosa procedencia.
  5. Limpia la carpeta de uploads y descargas. A veces los atacantes suben archivos PHP a estas carpetas. Busca archivos con extensiones .php, .phtml, .php5 en lugares donde no deberían estar.
  6. Verifica los archivos de configuración. Abre config/defines.inc.php y busca líneas sospechosas al final del archivo. Si ves algo como define('_DB_PASS_', '...'); repetido o código extraño, elimínalo.

[WARNING] No elimines archivos del núcleo de PrestaShop (carpetas classes, controllers, override) a menos que estés 100% seguro de que están infectados. Si eliminas un archivo esencial, tu tienda dejará de funcionar.


Paso 5: Reforzar la seguridad de tu PrestaShop

Una vez eliminado el malware, debes evitar que vuelva a ocurrir. Sigue estas recomendaciones:

Actualiza todo a la última versión

  • PrestaShop: Ve a Parámetros de la tienda > Información y actualiza a la última versión estable.
  • Módulos: Actualiza todos los módulos desde Módulos > Módulos instalados.
  • Tema: Asegúrate de que tu tema sea compatible con la versión actual de PrestaShop.

Cambia la configuración de seguridad

  • Usa contraseñas fuertes (mayúsculas, minúsculas, números, símbolos, mínimo 12 caracteres).
  • Activa la autenticación en dos pasos (2FA) para el panel de administración.
  • Limita los intentos de inicio de sesión (hay módulos gratuitos para esto).
  • Desactiva los módulos que no uses y elimina los que no necesites.

Protege el acceso a la base de datos

  • Cambia el prefijo de las tablas (por defecto es ps_). Si tu ataque fue reciente, considera instalar PrestaShop de nuevo con un prefijo diferente y restaurar los datos limpios.
  • Usa una contraseña única y compleja para la base de datos.
  • No compartas las credenciales de la base de datos por correo electrónico o en archivos accesibles.

Implementa un firewall de aplicaciones web (WAF)

  • Cloudflare ofrece un plan gratuito con protección básica contra inyecciones SQL.
  • Módulos de seguridad como "PrestaShop Security" o "Sucuri" pueden añadir una capa extra.

[TIP] Si tu hosting usa Syspanel (HestiaCP, puerto 2106), puedes activar el firewall integrado desde la sección "Firewall" para bloquear IPs sospechosas.


Preguntas frecuentes (FAQ)

¿Puedo recuperar mi tienda sin perder datos?

Sí, siempre que tengas una copia de seguridad limpia anterior al ataque. Si no, puedes limpiar la base de datos y los archivos siguiendo los pasos anteriores, pero es posible que pierdas algunos cambios recientes.

¿Debo denunciar el ataque a la policía?

Sí, especialmente si se han robado datos de clientes (como tarjetas de crédito). En España, puedes denunciar en la Policía Nacional o la Guardia Civil, en la unidad de delitos informáticos.

¿Cada cuánto debo hacer copias de seguridad?

Al menos una vez al día si tu tienda tiene mucho tráfico, o cada semana si es pequeña. Configura copias automáticas desde tu panel de hosting o con módulos como "PrestaShop Backup".

¿Los módulos gratuitos son seguros?

No todos. Descarga módulos solo de fuentes oficiales como el marketplace de PrestaShop o de desarrolladores reconocidos. Los módulos "nulled" (pirateados) son una de las principales causas de infecciones.

¿Qué hago si no puedo acceder al panel de administración?

Si el atacante bloqueó tu acceso, puedes restaurar el acceso desde la base de datos: busca la tabla ps_employee, localiza tu usuario y cambia el campo passwd por un hash generado con la función password_hash('tu_nueva_contraseña', PASSWORD_BCRYPT). Luego, intenta iniciar sesión con esa nueva contraseña.


Conclusión: La prevención es la mejor defensa

Detectar y eliminar una inyección SQL en PrestaShop puede ser un proceso tedioso, pero es fundamental para la seguridad de tu ecommerce. Recuerda que la ciberseguridad ecommerce no es un destino, sino un proceso continuo. Mantén tu tienda actualizada, usa contraseñas seguras, haz copias de seguridad periódicas y no instales módulos de dudosa procedencia.

Si después de seguir todos estos pasos sigues teniendo problemas, contacta con un especialista en seguridad PrestaShop o con tu proveedor de hosting. A veces, la mejor inversión es la tranquilidad de saber que tu tienda está protegida.

[INFO] La mayoría de los ataques se pueden prevenir con medidas básicas. Dedica una hora al mes a revisar la seguridad de tu tienda y evitarás dolores de cabeza mayores.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel