Impedisci la registrazione dell'account spam


10

Come impedire la registrazione dell'account spam, oltre ad abilitare CAPTCHA sui moduli (che ho già provato)? Abbiamo a che fare con un diluvio costante di loro.

Il campo del nome di battesimo è sempre composto da caratteri russi, quindi fallire un percorso più semplice, forse un modo per rilevare un certo personaggio e bloccare la registrazione in quel caso?


O se qualcuno ha avuto problemi simili ma ha avuto fortuna con i moduli, ecc., Per favore fatemelo sapere.
brackfost,

Risposte:


15

Abbiamo riscontrato lo stesso problema, la limitazione della lunghezza massima anteriore è stata aggirata facilmente (provalo tu stesso rimuovendo la classe di lunghezza massima da 25 html).

Quindi ecco cosa ho trovato:

  • Soluzione 1: blocco tramite IP: ogni abbonamento account utilizza un IP diverso dalla Colombia al Vietnam ...

  • Soluzione 2: blocco tramite User agent: può essere simulato ... Funziona se si desidera limitare le macchie dei crawler.

  • Soluzione 3: usa HoneyPot: potrebbe funzionare, ma se il bot ti ha già focalizzato, penso che sicuramente sappia quali campi pubblicare (vedi: https://magento.stackexchange.com/a/104261/50635 )

  • Soluzione 4: Captcha (Magento o Google): potrebbe funzionare ma alcune persone hanno affermato che è stato superato

  • Soluzione 5: modifica il modello e -mail e aggiungi l'e-mail di conferma :

    • La rimozione di dati di input come {{var customer.name}}, {{var customer.firstname}} dal modello /app/locale/[locale[/template/email/account_new.html può impedire che un bit venga contrassegnato come spam.
    • Aggiungi la conferma e-mail: Sistema> Configurazione> Configurazione cliente> Richiedi conferma e-mail> Sì
  • Soluzione 6: aggiorna le regole di limitazione dei campi dal database: direttamente nella tabella customer_eav_attribute , aggiorna le righe con attributo_id = 5 [nome] e attributo_id = 7 [cognome] e sostituisci 255 con 25 :

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

La soluzione 6 sembra il modo più veloce ed efficace per prevenire gli spambots, poiché utilizzano più di 25 caratteri.

Da allora, non sono stati creati altri account falso! Problema risolto.


Se ci provano con meno, almeno li limiteranno nel loro tentativo di phishing.

Puoi controllare quanti utenti hanno già un nome o un cognome di oltre 25 caratteri, nel nostro caso, davvero minori:

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

Per ulteriori informazioni sul perché questi account falsi sono registrati, leggi qui: https://magento.stackexchange.com/a/240710/50635


1
Ciao, per la soluzione 6 che hai menzionato sopra. Cosa devo fare per Magento 2.2.6? my validate_rules mostra "{" max_text_length ": 225," min_text_length ": 1}" e c'è anche un input_filter: "trim". dovrei rimuoverlo e modificare solo il 225 su 25? grazie
Kris Wen il

Prova a sostituire 225 con 25, quindi verifica se funziona
DependencyHell

2
ho provato a sostituire 225 con 25, e ieri ho eliminato il "trim", ma oggi ricevo ancora nuovi spam. ho aperto una nuova domanda proprio ora: magento.stackexchange.com/questions/266564/…
Kris Wen

1

Considerando che stiamo parlando della registrazione dell'account, sembra che tu sia sulla strada giusta. Hai provato a cambiare l'oggetto della registrazione e-mail?

è probabilmente su app / locale / yourlanguage / template / email / account_new.html


1

Come nota aggiuntiva, ho eliminato gli account spam con il seguente codice:

$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();
  }
}

Questo non risolve il problema
Gezzasa il

Personalmente, ho usato la soluzione DependencyHell 6. Volevo solo includerlo nel caso in cui qualcun altro avesse bisogno di eliminare in massa lo spam russo.
brackfost,

Ciao, come devo eseguire questo codice? sono su magento 2.2.6. grazie
Kris Wen il

Ehi @KrisWen, non sono sicuro che questo farà roteare gli occhi agli altri utenti, ma inserirò un modello nel tuo modulo personalizzato. Nel mio caso, l'ho bloccato App/Code/Ibex/Deleter/view/frontend/templates/customer.phtmle poi creato un deleter_index_index.xmlfile Deleter/view/frontend/layoutcon <block class = "Ibex \ Deleter \ Block \ Delete" name = "delete" template = "Ibex_Deleter :: character.phtml" /> lì in modo che quando vai su yoursite.com/deleter il codice verrebbe eseguito. Assicurati solo di disattivare ed eliminare il modulo in seguito.
brackfost

haha grazie! @ TryingestFool Ho un po 'di confusione sulla risposta originale selezionata. sai per caso? -> "Ciao, per la soluzione 6 che hai menzionato sopra. Cosa devo fare per Magento 2.2.6? My validate_rules mostra" {"max_text_length": 225, "min_text_length": 1} "e c'è anche un input_filter: "trim". Devo rimuovere il trim e modificare il numero da 225 a 25? "
Kris Wen,

1

Usa cloudflare o qualche altro firewall per bloccare alcuni paesi, se puoi. Cina, Hong Kong, Russia. Questo non ferma comunque tutto lo spam e non funziona se hai bisogno di quei paesi per poter accedere ovviamente. Ma è stato utile permettermi di utilizzare effettivamente il pannello di amministrazione poiché il server è stato martellato piuttosto duramente.

Abilita la build in Google Recaptcha o utilizza un plug-in alternativo se Magento non è stato aggiornato alla 2.3.0+

In Magento 2.3 per abilitare il reCAPTCHA integrato di Google.

1) Visita i negozi> Impostazioni> Configurazione> Sicurezza> Google reCAPTCHA 2) Genera Recaptcha v2 recaptcha invisibile o non sono un robot. 3) Inseriscili nella configurazione dell'amministratore in quella pagina e abilitalo sul frontend per l'uso in Crea utente.

Tuttavia, abilitare per altre funzionalità non può far male.

Per ripulire gli account esistenti, trova schemi nei loro input e crea query per selezionarli, assicurandoti che i tuoi utenti normali non facciano parte di quel set di dati.

Puoi eliminarli dalla tabella customer_entity.

Esempio di SQL da un sito che ho ripulito: crea il tuo in quanto dovrebbe essere consapevole delle circostanze del tuo set di dati, ecc.

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%'

Assicurati che il vecchio Captcha Magento di base sia disabilitato. Clienti> Configurazione cliente> CAPTCHA

Abilita CAPTCHA su Storefront: No

Poiché sarà in conflitto con Google reCAPTCHA ...

Link alla documentazione ufficiale:

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

I robot sembrano colpire l'endpoint di creazione dell'account (Sì anche se si eliminano i pulsanti / i collegamenti Crea account dal tema), ma si consiglia di eliminare i loro account o di disattivarli poiché potrebbero dormire fino a tardi e spammare altre cose e occupano spazio in il tuo DB comunque ....

Buona fortuna a tutti.


0

Puoi facilmente mettere i domini da bloccare e impostare il messaggio di errore da visualizzare quando un utente tenta di registrarsi con un dominio di posta elettronica nell'elenco dei blocchi. Le istruzioni complete sono le seguenti:

Crea un nuovo modulo con un nome EmailCheck nella cartella Ecomsolver

Passaggio: 1 Scrivi il codice seguente nel pannello di amministrazione. Il percorso del file sarà -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>

Passaggio - 2 Scrivere il seguente codice in un file. Il percorso del file sarà - 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>

Passaggio - 3 Scrivere il seguente codice nel file XML con il nome Config. Il percorso del file sarà -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>

Passaggio - 4 Scrivere il seguente codice nel file XML con il nome Modulo. Il percorso del file sarà -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>

Passaggio: 5 Creare il nome della cartella Modello in EmailCheck. Quindi creare una sottocartella Plugin > Controller > Account. Scrivi il seguente codice nel file php con il nome RestrictCustomerEmail. Il percorso del file php sarà -Ecomsolver >EmailCheck > Plugin > Controller > Account > RestrictCustomerEmail

/*Ecomsolver @@@@@@ ecomsolver@gmail.com*/ 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();
}
}

-1

L'ho risolto aggiungendo il seguente codice a .htaccess come lotto di debug, non ho trovato altro che quando ho creato un evento sul salvataggio del cliente dopo averlo ricevuto e poi è stato rimosso.

<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>

Ciao, grazie per la tua risposta. Cosa fa esattamente quanto sopra e come hai deciso di scegliere come target Gecko, ecc.?
brackfost,

2
L'ho rilevato dall'evento di salvataggio del cliente. Questo è un robot russo. Quindi puoi disabilitarli con quel codice. Inoltre, se non funziona, devi anche scrivere un evento quando il cliente salva e scrive il registro per $ _Server e $ _questione, quindi esegui il debug
Sukumar Gorai,

Agenti utente trovati: Mozilla / 5.0 (Windows NT 6.1; Win64; x64) AppleWebKit / 537.36 (KHTML, come Gecko) Chrome / 62.0.3202.94 Safari / 537.36 e Mozilla / 5.0 (Windows NT 10.0; WOW64; rv: 45.0) Gecko / 20100101 Firefox / 45.0
DependencyHell

Ora puoi aggiungerlo nel tuo htaccess e risolvere il problema
Sukumar Gorai,

Non possiamo bloccare questo user agent perché abbiamo molti visitatori con questo. Questo non specifica un bot famoso, ma un agente utente comune ...
DependencyHell
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.