Si tienes o gestionas una tienda en PrestaShop, es posible que últimamente hayas notado como tu panel de control se haya llenado de decenas de cuentas de clientes «spam». Para solucionarlo, puedes actualizar tu versión de PrestaShop (a la 1.6.1.24 en el caso de PrestaShop 1.6 y a la 1.7.5.2 en el caso de PrestaShop 1.7) o aplicar un parche como te explicamos en este artículo.
Mostrar contenidos
Origen del problema.
La razón es debida a un bot que ha encontrado una debilidad en el formulario de registro de clientes, en los campos de nombre y apellidos. El modus operandi de este ataco spam es registrar nuevas cuentas con los emails de las personas que serán las destinatarias del spam, poniendo en el nombre y apellidos las URL spam que se quieren enviar. Así que al crear las cuentas, los titulares de las direcciones de correo electrónico recibirán emails con las URLs de spam enviadas desde la tienda PrestaShop que ha sido atacada.
Solución #1. Actualizar la versión de PrestaShop.
Para prevenir el registro de cuentas de clientes spam puedes actualizar tu tienda a la versión 1.6.1.24 o 1.7.5.2. Cómo indican en el foro de desarrolladores, «las actualizaciones de seguridad solucionan un problema de validación en el formulario de registro del cliente, que actualmente está siendo explotado por los spammers que ingresaban las URL de spam como nombre o apellidos del cliente». Cómo siempre, una actualización, aunque sea menor, siempre conlleva unos riesgos. Si no tienes tiempo para ir apagando los fuegos que puedan surgir… te recomendamos la solución número dos.
Solución #2. Aplicar un parche.
Menos invasiva que una actualización, es la aplicación de un parche que permite modificar las clases validate.php y customer.php, tal y como se describe en este post del forum de PrestaShop. De todas formas, antes de tocar código, igual te interesar un patch que la comunidad PrestaShop ha puesto a disposición de quién lo necesite. El patch crea automáticamente las clases ya modificadas en en la carpeta override (así no machacas las del core): https://area51.enter-solutions.com/snippets/122
Para instalar el patch hay que seguir estos pasos:
- Descargar el archivo patch122.php
- Subirl a la raíz del administrador de la tienda (http(s)://domain.tld/<admindir>/patch122.php)
- Ejecutarlo entrando en la URL
Si has aplicado el patch correctamente, te aparecerá el siguiente mensaje:
class Validate is now overrided class Customer is now overrided END

Si has aplicado el patch correctamente, verás este mensaje.
Finalmente puedes borrar el patch que has subido al FTP. Espero que te haya servido y que ya no recibas cuentas de cliente spam en tu tienda PrestaShop.
Desafortunadamente en presta 1.6.1.6 no me ha funcionado esta solución que he hecho esta mañana después de 10 días aguantando a ver si los $$$$$ de prestashop dan una solución oficial. He completado el proceso con éxito ya que la respuesta ha sido la mencionada en las instrucciones pero inmediatamente seguían entrando cómo Pedro por su casa y siguen.
Ya solo falta que nos metan en una lista negra de Spam y no podamos seguir trabajando para llevar el pan a nuestra casa para dar de comer a nuestros hijos.
Publicidad de módulos de pago y spam por un tubo sobre cursos de pago carísimos si siguen mandando los de prestashop. Si estas buscando un CMS para tu tienda prestashop no creo que sea a día de hoy la mejor opción. sacacuartos, lo que era y en lo que se ha convertido.
Hola Jose Luis, lo he echo en varias instalaciones con distintas versiones de PrestaShop (1.6.1.11, 1.6.1.17, 1.6.1.19, 1.6.1.22…). De momento ha funcionado en todas sin que se vuelvan a registrar más clientes spam.
¿En el directorio /override/classes se te han generado los archivos Validate.php y Customer.php?
Si sí, puedes probar a borrarlos y volver a ejecutar el patch.
Espero que puedas solucionarlo. Un saludo
Hola Davide,
El mensaje de que todo ha salido bien me lo dió. Sabes cómo puedo dejar todo cómo si no hubiera hecho nada para probar otras soluciones que hay por ahí, el módulo de factoria digital por ejemplo, que por lo visto le está funcionando a mucha gente. No quiero mezclar porque seguro que empezaremos con los errores graves.
Esto es un lio hay gente que les funciona una cosa y a otros con la misma versión otras, etc.
Esas carpetas que me dices que borre ¿las ha creado este patch? si las borro y las vuelvo a crear el resultado será el mismo ¿no? o sea que no funcione.
Saludos.
Hola Jose Luis, el patch lo que crea son los archivos Validate.php y Customer.php en el directorio /override/classes.
Si las borras y vuelves a ejecutar el patch posiblemente el resultado sea lo mismo, pero por lo menos intentarlo.
Saludos
hola, de casualidad alguien tiene el patch para PrestaShop 1.5.2.0 ? gracias
Hola Leo! En este enlace se comenta la solución para la versión 1.4:
https://www.prestashop.com/forums/topic/981158-securite-spam-compte-client-solution-13-17/?tab=comments#comment-3100704
Muchas Gracias Davide!!
Ya lo intente y me arroja el error Sorry only version since 1.5.4.0 are supported. …. algo estoy haciendo mal?
Hola Leo, de nada. Gracias a ti por comentar 🙂
¿Has probado con los pasos que indican en este hilo?
https://www.prestashop.com/forums/topic/981158-securite-spam-compte-client-solution-13-17/?tab=comments#comment-3100704
Lo siento pero no tengo ninguna tienda con 1.5 para probarlo :/
Buenos días. Se me ha instalado perfectamente y se me han creado los dos archivos PHP en el directorio override/classes.
Veo que en el archivo validate.php, está denegando el registro a los usuarios cuyo nombre comienza por algún caracter relacionado con alguna url. Mi problema, y quizás el que pueda presentarse a otros usuarios, es que los usuarios spam que se me registran en mi tienda online, no utilizan direcciones web en el campo nombre, sino en el campo apellido, por lo que necesito modificar ese código para que funcione de forma óptima en mi web. Espero que se pueda solucionar. Un saludo y gracias de antemano.
Hola Roberto, la función isCustomerName($name) del archivo validate.php verifica que tanto el nombre (firstname) como el apellido (laststname) no contengan direcciones URL o nombres de sitios web. Tal vez sea tema de caché o algo por el estilo. Intenta borrar la caché del navegador y de PrestaShop. Un saludo!