Ataque de Spam en el registro PrestaShop

Empezó ayer. Uno de mis clientes me mandó un email avisándome de que tenía nuevos clientes en PrestaShop un poco raros.

Revisamos y nos dimos cuenta de que era un ataque de SPAM a PrestaShop en toda regla. Lo primero que hicimos fue activar el módulo para evitar el SPAM ruso que ya teníamos también en el contacto, pero se saltaban los Captchas con facilidad.

Esta mañana el usuario de foros de PrestaShop Dokia publicaba una solución que funciona.

Solución al SPAM en el registro de PrestaShop

Hay que modificar dos clases de PrestaShop Validate.php y Customer.php para evitar que se pueda registrar un spammer con una web como apellido.

Además ha aportado soluciones para PrestaShop desde la 1.3 a la 1.7. Por lo que hay que agradecérselo.

Nosotros hemos aplicado la solución en Overrides para la 1.6 y parece que funciona correctamente.

En Validate.php:

 public static function isCustomerName($name)
    {
        if (preg_match(Tools::cleanNonUnicodeSupport('/www|http/ui'),$name))
           return false;

        return preg_match(Tools::cleanNonUnicodeSupport('/^[^0-9!\[\]<>,;?=+()@#"°{}_$%:\/\\\*\^]*$/u'), $name);
    }

En Customer.php:

            'lastname' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
            'firstname' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),

Cambiarlo por:

            'lastname' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isCustomerName', 'required' => true, 'size' => 32),
            'firstname' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isCustomerName', 'required' => true, 'size' => 32),

Os dejo las instrucciones y un fichero para descargar con los archivos correspondientes:

Descarga el archivo: SolucionSpam.zip.

Instrucciones para PS 1.6:

Ojo, antes de copiar los archivos revisad que estos archivos no existan ya, y si lo están, tendrás que editarlos con los cambios o copiar las funciones correspondientes.

1.- Copiar los archivos Validate.php y Customer.php en Override -> Classes
2.- Borrar en /Cache el archivo class_index.php
3.- Intentar dar de alta un cliente con www.loquesea.com de apellido y comprobar que muestra un fallo.

Solución Spam en el registro PrestaShop

Instrucciones para otras versiones o si prefieres hacerlo manualmente: https://www.prestashop.com/forums/topic/981159-security-customer-validation-13-17/

4 comentarios en «Ataque de Spam en el registro PrestaShop»

  1. Hola, estoy aplicando la solución para PS 1.6, solo tengo uno de los dos archivos, el customer.php, por lo que en mi caso tendría que añadir el archivo validate.php y modificar el customer.php, es correcto?-
    Muchas gracias

    Responder
    • Supuestamente si sigues la guía o simplemente te bajas el archivo se solucionaba.

      PrestaShop ha lanzado la versión 1.6.24 que lo soluciona.

      Responder
  2. Buenas tardes, he probado a cambiar los códigos, pero lo valida igual que antes, no da ningún error al poner una web como apellido, como lo puedo solucionar?. Gracias

    Responder

Deja un comentario