Prevenir registro de cuenta de spam

10

¿Cómo evitar el registro de la cuenta de spam, además de habilitar CAPTCHA en los formularios (que ya he probado)? Estamos lidiando con una inundación constante de ellos.

El campo de nombre siempre es caracteres rusos, por lo que si falla una ruta más fácil, ¿tal vez una forma de detectar un determinado carácter y bloquear el registro en ese caso?

brackfost
fuente
O si alguien ha tenido problemas similares pero ha tenido suerte con los módulos, etc., hágamelo saber.
brackfost

Respuestas:

15

Pasamos por el mismo problema, la limitación de longitud máxima frontal se omitió fácilmente (pruébelo eliminando la clase de longitud máxima-25 de html).

Así que aquí está lo que encontré:

  • Solución 1: Bloqueo a través de IP: cada suscripción de cuenta utiliza una IP diferente desde Colombia hasta Vietnam ...

  • Solución 2: Bloqueo a través del Agente de usuario: se puede falsificar ... Funciona si desea limitar las manchas de rastreadores.

  • Solución 3: Use HoneyPot: puede funcionar, pero si el bot ya lo enfocó, creo que seguramente sabe qué campos publicar (consulte: https://magento.stackexchange.com/a/104261/50635 )

  • Solución 4: Captcha (Magento o Google): puede funcionar, pero algunas personas dijeron que se superó

  • Solución 5: edite la plantilla de correo electrónico y agregue el correo electrónico de confirmación :

    • Eliminar datos de entrada como {{var customer.name}}, {{var customer.firstname}} de la plantilla /app/locale/[localefont>/template/email/account_new.html puede evitar que un bit se marque como spam.
    • Agregue la confirmación por correo electrónico: Sistema> Configuración> Configuración del cliente> Solicitar confirmación de correos electrónicos> Sí
  • Solución 6: Actualice las reglas de limitación de campos de la base de datos: directamente en la tabla customer_eav_attribute , actualice las filas con attribute_id = 5 [nombre] y attribute_id = 7 [apellido] y reemplace 255 por 25 :

    • a:2:{s:15:"max_text_length";i:255;s:15:"min_text_length";i:1;}
    • por: a:2:{s:15:"max_text_length";i:25;s:15:"min_text_length";i:1;}

La Solución 6 parece la forma más rápida y efectiva de prevenir los robots de spam, ya que utilizan más de 25 caracteres.

Desde entonces, ¡NO SE CREARON MÁS CUENTAS FALSAS! Problema resuelto.


Si intentan con menos, al menos los restringirá en su intento de phishing.

Puede verificar cuántos usuarios ya tienen un nombre o apellido de más de 25 caracteres, en nuestro caso, realmente menores:

SELECT ce.entity_id, ce.email, cev2.value AS firstname, cev3.value AS lastname
FROM customer_entity ce
-- first name
INNER JOIN customer_entity_varchar cev2 ON (ce.entity_id = cev2.entity_id AND cev2.attribute_id = 5)
-- last name
INNER JOIN customer_entity_varchar cev3 ON (ce.entity_id = cev3.entity_id AND cev3.attribute_id = 7)
WHERE CHAR_LENGTH(cev2.value)>25 or CHAR_LENGTH(cev3.value)>25

Para obtener más información sobre por qué estas cuentas falsas están registradas, lea aquí: https://magento.stackexchange.com/a/240710/50635

Dependencia
fuente
1
Hola, para la solución 6 que mencionaste anteriormente. ¿Qué debo hacer para Magento 2.2.6? my validate_rules muestra "{" max_text_length ": 225," min_text_length ": 1}", y también hay un input_filter: "trim". ¿Debo eliminar eso y simplemente editar el 225 al 25? gracias
Kris Wen
Intente reemplazar 225 por 25, luego pruebe si funciona
DependencyHell
2
Traté de reemplazar 225 por 25, y saqué el "recorte" ayer, pero todavía recibo nuevos mensajes de spam hoy. Abrí una nueva pregunta en este momento: magento.stackexchange.com/questions/266564/…
Kris Wen
1

Teniendo en cuenta que estamos hablando del registro de cuenta, parece que está en el camino correcto. ¿Has intentado cambiar el asunto del registro de correo electrónico?

probablemente esté en app / locale / yourlanguage / template / email / account_new.html

Marcony Monteiro
fuente
1

Como nota complementaria, eliminé las cuentas de spam con el siguiente código:

$customers = $this->getCustomerCollection();

$this->registry->register('isSecureArea', true);

function isRussian($text) {
    return preg_match('/[А-Яа-яЁё]/u', $text);
}

foreach($customers as $customer){
  $name = $customer->getName();
  if(isRussian($name)){
    $customer->delete();
  }
}
brackfost
fuente
Esto no resuelve el problema
Gezzasa
Personalmente, utilicé la solución 6. DependencyHell. Solo quería incluir esto en caso de que alguien más necesitara eliminar masivamente el spam ruso.
brackfost
Hola, ¿cómo debo ejecutar este código? Estoy en Magento 2.2.6. gracias
Kris Wen
Hola @KrisWen, no estoy seguro de si esto hará que otros usuarios pongan los ojos en blanco, pero simplemente pondría una plantilla en tu módulo personalizado. En mi caso, lo pegué App/Code/Ibex/Deleter/view/frontend/templates/customer.phtmly luego hice un deleter_index_index.xmlarchivo Deleter/view/frontend/layoutcon <block class = "Ibex \ Deleter \ Block \ Delete" name = "delete" template = "Ibex_Deleter :: character.phtml" /> allí para que cuando vaya a yoursite.com/deleter se ejecutará el código. Solo asegúrese de desactivar y eliminar el módulo después.
brackfost
¡jaja gracias! @ TryingestFool Tengo cierta confusión sobre la respuesta original seleccionada. ¿Sabes? -> "Hola, para la solución 6 que mencionaste anteriormente. ¿Qué debo hacer para Magento 2.2.6? My validate_rules muestra" {"max_text_length": 225, "min_text_length": 1} ", y también hay un input_filter: "recortar". ¿Debo eliminar el recorte y simplemente editar el número de 225 a 25? "
Kris Wen
1

Use cloudflare o algún otro firewall para bloquear algunos países si puede. China, Hong Kong, Rusia. Sin embargo, esto no detiene todo el spam y no funciona si necesita que esos países puedan acceder, por supuesto. Pero fue útil dejarme usar el panel de administración, ya que el servidor estaba siendo golpeado bastante duro.

Habilite la compilación en Google Recaptcha o use un complemento alternativo si no ha actualizado Magento a 2.3.0+

En Magento 2.3 para habilitar el construido en Google reCAPTCHA.

1) Visite Tiendas> Configuración> Configuración> Seguridad> Google reCAPTCHA 2) Genere Recaptcha v2 invisible recaptcha o no soy un bot de teclas. 3) Ingrese en la configuración de administrador en esa página y habilítela en la interfaz para Usar en Crear usuario.

Sin embargo, la habilitación para otras funciones tampoco puede doler realmente.

Para limpiar las cuentas existentes, encuentre patrones en sus entradas y cree consultas para seleccionarlas mientras se asegura de que sus usuarios normales no formen parte de ese conjunto de datos.

Puede eliminarlos de la tabla customer_entity.

Ejemplo de SQL de un sitio que limpié: cree el suyo propio, ya que sería necesario tener en cuenta sus circunstancias, su conjunto de datos, etc.

DELETE FROM customer_entity
WHERE SUBSTRING_INDEX(email, '\@', -1) IN ('pp.com',
'sf-express.com',
'qqlong.com',
'kinohit.win',
'sohu.com',
'21cn.com',
'yeah.net',
'koreamail.com',
'aliyun.com',
'mail.ru',
'VIP.SINA.COM',
'yahoo.co.in',
'icload.com',
'sogou.com',
'vip.qq.com',
'sina.cn',
'189.cn',
'wo.com.cn',
'qq.cn',
'sina.com.cn',
'126.cn',
'yahoo.com.cn',
'3g.cn',
'163.com',
'167.com',
'139.com',
'126.com',
'130.com',
'144.com',
'123.com',
'ca800.com',
'168.com',
'188.com',
'1974.com',
'qq.co',
'sina.com',
'qq.com',
'qq.con',
'QQ.come',
'yandex.com',
'5ol.com',
'yeat.net',
'yahoo.cn')
OR lastname LIKE '%http://%'
OR lastname LIKE '%https://%'
OR lastname LIKE '%【%】%'
OR lastname LIKE '%tw55.cc%'
OR lastname LIKE '%www.ope2228.com%'

Asegúrese de que el antiguo Magento Captcha básico esté deshabilitado. Clientes> Configuración del cliente> CAPTCHA

Habilitar CAPTCHA en Storefront: No

Como entrará en conflicto con Google reCAPTCHA ...

Enlaces de documentación oficial:

https://docs.magento.com/m2/ce/user_guide/configuration/security/google-recaptcha.html

https://docs.magento.com/m2/ce/user_guide/stores/security-google-recaptcha.html

Los bots simplemente parecen alcanzar el punto final de creación de la cuenta (Sí, incluso si elimina los botones / enlaces Crear cuenta de su tema), pero se recomienda eliminar sus cuentas o desactivarlas, ya que podrían dormir hasta más tarde y enviar spam a otras cosas y usar el espacio en su base de datos de todos modos ...

Buena suerte a todos.

Liam Mitchell
fuente
0

Puede bloquear fácilmente los dominios y configurar el mensaje de error que se mostrará cuando un usuario intente registrarse con un dominio de correo electrónico en su lista de bloqueo. Las instrucciones completas son las siguientes:

Cree un nuevo módulo con un nombre EmailCheck en la carpeta Ecomsolver

Paso - 1 Escriba el siguiente código en el panel de administración. La ruta del archivo será:Ecomsolver >EmailCheck > etc > Adminhtml > System

<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd"> <system> <tab id="ecomsolver" translate="label" sortOrder="999"> <label>Ecomsolver</label> </tab> <section id="emailblock" translate="label" sortOrder="130" showInDefault="1" showInWebsite="1" showInStore="1"> <class>separator-top</class> <label>Email Check</label> <tab>ecomsolver</tab> <resource>PixieMedia_General::general_config</resource> <group id="domains" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1"> <label>Domain Names</label> <field id="domains" translate="label" type="textarea" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1"> <label>Domain names to block</label> <comment>Comma separated values eg google.co.uk,mail.ru,some.com</comment> </field> <field id="message" translate="label" type="textarea" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1"> <label>Message to display</label> <comment>The error message to show users who try to register with one of the above domain names</comment> </field> </group> </section> </system> </config>

Paso - 2 Escribe el siguiente código en un archivo. La ruta del archivo será: Ecomsolver >EmailCheck > etc > Frontend > di

<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\Customer\Controller\Account\CreatePost"> <plugin name="restrictCustomerEmail" type="Ecomsolver\Emailcheck\Model\Plugin\Controller\Account\RestrictCustomerEmail"/> </type> </config>

Paso - 3 Escriba el siguiente código en el archivo XML con el nombre Config. La ruta del archivo será:Ecomsolver >EmailCheck > etc > Config

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd"> <default> <emailblock> <domains> <domains>163.com,mail.ru</domains> </domains> <message> <domains>We do not allow registration from your email domain</domains> </message> </emailblock> </default> </config>

Paso - 4 Escriba el siguiente código en un archivo XML con el nombre Módulo. La ruta del archivo será:Ecomsolver >EmailCheck > etc > Module

<config xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd"> <module name="Ecomsolver_Emailcheck" setup_version="1.0.0"> </module> </config>

Paso - 5 Crea el nombre de la carpeta Modelo en EmailCheck. Luego crea una subcarpeta Plugin > Controller > Account. Escriba el siguiente código en el archivo php con el nombre RestrictCustomerEmail. La ruta del archivo php será:Ecomsolver >EmailCheck > Plugin > Controller > Account > RestrictCustomerEmail

/*Ecomsolver @@@@@@ [email protected]*/ namespace Ecomsolver\Emailcheck\Model\Plugin\Controller\Account; use Magento\Framework\Controller\Result\RedirectFactory; use Magento\Framework\UrlFactory; use Magento\Framework\Message\ManagerInterface; use Magento\Framework\App\Config\ScopeConfigInterface; class RestrictCustomerEmail {

 /**
  * @var \Magento\Framework\UrlInterface
  */

protected $urlModel;

/**
 * @var \Magento\Framework\Controller\Result\RedirectFactory
 */

protected $resultRedirectFactory;

/**
 * @var \Magento\Framework\Message\ManagerInterface
 */
protected $messageManager;
/**
 * RestrictCustomerEmail constructor.
 * @param UrlFactory $urlFactory
 * @param RedirectFactory $redirectFactory
 * @param ManagerInterface $messageManager
 */
public function __construct(
    UrlFactory $urlFactory,
    RedirectFactory $redirectFactory,
    ManagerInterface $messageManager,
    ScopeConfigInterface $scopeConfig
)
{
    $this->urlModel = $urlFactory->create();
    $this->resultRedirectFactory = $redirectFactory;
    $this->messageManager = $messageManager;
    $this->scopeConfig = $scopeConfig;
}
/**
 * @param \Magento\Customer\Controller\Account\CreatePost $subject
 * @param \Closure $proceed
 * @return mixed
 * @throws \Magento\Framework\Exception\LocalizedException
 */
public function aroundExecute(
    \Magento\Customer\Controller\Account\CreatePost $subject,
    \Closure $proceed
)
{
    /** @var \Magento\Framework\App\RequestInterface $request */
    $email = $subject->getRequest()->getParam('email');
    list($nick, $domain) = explode('@', $email, 2); 
    $domains = $this->scopeConfig->getValue('emailblock/domains/domains', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    if(!$domains) { 
        return $proceed; 
    }
    $domainArray = array_map('trim', explode(',', $domains));
    if(count($domainArray) < 1) { 
        return $proceed;
    }       
    if (in_array($domain, $domainArray, true)){
    $message = $this->scopeConfig->getValue('emailblock/domains/message', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
        if(!$message) { $message = __('We do not allow registration from your email domain'); }
        $this->messageManager->addErrorMessage($message);
        $defaultUrl = $this->urlModel->getUrl('*/*/create', ['_secure' => true]);
        /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
        $resultRedirect = $this->resultRedirectFactory->create();
        return $resultRedirect->setUrl($defaultUrl);
    }
    return $proceed();
}
}
Ecomsolver Private Limited
fuente
-1

Lo resolví agregando el siguiente código a .htaccess como lote de depuración, no encontré nada, pero cuando creé un evento en el guardado del cliente después de obtener esto y luego lo reservé ahora.

<IfModule mod_rewrite.c>
    RewriteCond %{HTTP_USER_AGENT} "rv:40\.0\)\ Gecko/20100101\ Firefox/40\.1$" [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} "Gecko.*Gecko" [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} "Gecko/([a-z]|[A-Z])\." [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} "Gecko/\ " [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} "Gecko/20([2-9])" [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} "Gecko/201([1-9])"
</IfModule>
Sukumar Gorai
fuente
Hola gracias por tu respuesta ¿Qué hace exactamente lo anterior y cómo determinó apuntar a Gecko, etc.?
brackfost
2
Lo he detectado por cliente guardar evento. Esto es bots rusos. Entonces puede deshabilitarlos por ese código. Además, si no funciona, también debe escribir un evento cuando el cliente guarda y escribe el registro de $ _Server y $ _request, luego depúrelo
Sukumar Gorai
Agentes de usuario encontrados: Mozilla / 5.0 (Windows NT 6.1; Win64; x64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 62.0.3202.94 Safari / 537.36 y Mozilla / 5.0 (Windows NT 10.0; WOW64; rv: 45.0) Gecko / 20100101 Firefox / 45.0
DependencyHell
Ahora puede agregarlo en su htaccess y resolver el problema
Sukumar Gorai
No podemos bloquear este agente de usuario porque tenemos muchos visitantes con este. Este no especifica un bot famoso, sino un agente de usuario común ...
DependencyHell