Verhindern Sie die Registrierung eines Spam-Kontos

10

Wie kann ich die Registrierung eines Spam-Kontos verhindern, abgesehen davon, dass CAPTCHA auf Formularen aktiviert wird (was ich bereits versucht habe)? Wir haben es mit einer stetigen Flut von ihnen zu tun.

Das Feld für den Vornamen besteht immer aus russischen Zeichen. Wenn Sie also eine einfachere Route nicht finden, können Sie möglicherweise ein bestimmtes Zeichen erkennen und in diesem Fall die Registrierung blockieren.

Brackfost
quelle
Oder wenn jemand ähnliche Probleme hatte, aber Glück mit Modulen usw. hatte, lassen Sie es mich bitte wissen.
Brackfost

Antworten:

15

Wir haben das gleiche Problem durchlaufen, die Begrenzung der vorderen MaxLänge wurde leicht umgangen (versuchen Sie es selbst, indem Sie die Klasse mit der maximalen Länge von 25 aus HTML entfernen ).

Also hier ist was ich gefunden habe:

  • Lösung 1: Blockieren über IP: Jedes Kontoabonnement verwendet eine andere IP von Kolumbien nach Vietnam ...

  • Lösung 2: Blockieren über User Agent: Es kann gefälscht werden ... Es funktioniert, wenn Sie Crawler-Blots begrenzen möchten.

  • Lösung 3: Verwenden Sie HoneyPot: funktioniert möglicherweise, aber wenn der Bot Sie bereits fokussiert hat, weiß er sicher, welche Felder zu posten sind (siehe: /magento//a/104261/50635) ).

  • Lösung 4: Captcha (Magento oder Google): funktioniert möglicherweise, aber einige Leute sagten, es sei übergangen worden

  • Lösung 5: Bearbeiten Sie die E- Mail-Vorlage und fügen Sie die Bestätigungs-E-Mail hinzu :

    • Das Entfernen von Eingabedaten wie {{var customer.name}}, {{var customer.firstname}} aus der Vorlage /app/locale/[locale‹/template/email/account_new.html kann verhindern, dass ein Bit als Spam markiert wird.
    • Fügen Sie die E-Mail-Bestätigung hinzu: System> Konfiguration> Kundenkonfiguration> E-Mail-Bestätigung erforderlich> Ja
  • Lösung 6: Aktualisieren Sie die Felder-Begrenzungsregeln aus der Datenbank: Aktualisieren Sie direkt in der Tabelle customer_eav_attribute die Zeilen mit attribute_id = 5 [Vorname] und attribute_id = 7 [Nachname] und ersetzen Sie 255 durch 25 :

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

Lösung 6 scheint der schnellste und effektivste Weg zu sein, um Spambots zu verhindern, da sie mehr als 25 Zeichen verwenden.

Seitdem wurde KEIN FAKE ACCOUNT mehr erstellt! Problem gelöst.


Wenn sie es mit weniger versuchen, werden sie zumindest in ihrem Phishing-Versuch eingeschränkt.

Sie können überprüfen, wie viele Benutzer bereits einen Vor- oder Nachnamen mit mehr als 25 Zeichen haben, in unserem Fall wirklich geringfügig:

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

Weitere Informationen dazu, warum diese gefälschten Konten registriert sind, finden Sie hier: /magento//a/240710/50635

DependencyHell
quelle
1
Hallo, für die Lösung 6, die Sie oben erwähnt haben. Was soll ich für Magento 2.2.6 tun? Meine validate_rules zeigt "{" max_text_length ": 225," min_text_length ": 1}" und es gibt auch einen input_filter: "trim". sollte ich das entfernen und nur die 225 bis 25 bearbeiten? danke
Kris Wen
Versuchen Sie, 225 durch 25 zu ersetzen, und testen Sie dann, ob es funktioniert
DependencyHell
2
Ich habe gestern versucht, 225 durch 25 zu ersetzen und die "Trimmung" herauszunehmen, aber heute immer noch neue Spam-Mails. Ich habe gerade eine neue Frage geöffnet: magento.stackexchange.com/questions/266564/…
Kris Wen
1

Wenn man bedenkt, dass es sich um eine Kontoregistrierung handelt, scheinen Sie auf dem richtigen Weg zu sein. Haben Sie versucht, den Betreff der E-Mail-Registrierung zu ändern?

Es befindet sich wahrscheinlich in app / locale / yourlanguage / template / email / account_new.html

Marcony Monteiro
quelle
1

Als zusätzliche Anmerkung habe ich die Spam-Konten mit dem folgenden Code gelöscht:

$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
quelle
Dies löst das Problem nicht
Gezzasa
Persönlich habe ich die Lösung 6 von DependencyHell verwendet. Ich wollte dies nur einschließen, falls jemand anderes russischen Spam massenweise löschen muss.
Brackfost
Hallo, wie soll ich diesen Code ausführen? Ich bin auf Magento 2.2.6. danke
Kris Wen
Hey @KrisWen, ich bin mir nicht sicher, ob dies andere Benutzer dazu bringt, die Augen zu verdrehen, aber ich habe einfach eine Vorlage in Ihr benutzerdefiniertes Modul eingefügt. In meinem Fall habe ich es eingefügt App/Code/Ibex/Deleter/view/frontend/templates/customer.phtmlund dann eine deleter_index_index.xmlDatei Deleter/view/frontend/layoutmit <block class = "Ibex \ Deleter \ Block \ Delete" name = "delete" template = "Ibex_Deleter :: character.phtml" /> darin eingefügt, damit wann Sie gehen zu yoursite.com/deleter, um den Code auszuführen. Deaktivieren und löschen Sie das Modul anschließend.
Brackfost
Haha Danke! @TryingestFool Ich habe einige Verwirrung über die ursprünglich ausgewählte Antwort. weißt du zufällig? -> "Hallo, für die Lösung 6, die Sie oben erwähnt haben. Was soll ich für Magento 2.2.6 tun? Meine validate_rules zeigt" {"max_text_length": 225, "min_text_length": 1} "und es gibt auch einen input_filter: "trim". soll ich die trim entfernen und einfach die nummer von 225 auf 25 bearbeiten? "
Kris Wen
1

Verwenden Sie Cloudflare oder eine andere Firewall, um einige Länder zu blockieren, wenn Sie können. China, Hong Kong, Russland. Dies stoppt jedoch nicht den gesamten Spam und funktioniert nicht, wenn Sie diese Länder benötigen, um natürlich darauf zugreifen zu können. Aber es war hilfreich, mich das Admin-Panel tatsächlich benutzen zu lassen, da der Server ziemlich hart wurde.

Aktivieren Sie den Build in Google Recaptcha oder verwenden Sie ein alternatives Plugin, wenn Sie Magento nicht auf 2.3.0+ aktualisiert haben

In Magento 2.3, um das eingebaute Google reCAPTCHA zu aktivieren.

1) Besuchen Sie Stores> Einstellungen> Konfiguration> Sicherheit> Google reCAPTCHA. 2) Generieren Sie unsichtbares Recaptcha v2-Recaptcha, oder ich bin kein Bot-Schlüssel. 3) Geben Sie sie in die Administratorkonfiguration auf dieser Seite ein und aktivieren Sie sie im Frontend für die Verwendung in Benutzer erstellen.

Das Aktivieren für andere Funktionen kann jedoch auch nicht wirklich schaden.

Suchen Sie zum Bereinigen vorhandener Konten nach Mustern in ihren Eingaben und erstellen Sie Abfragen, um sie auszuwählen, während Sie sicherstellen, dass Ihre normalen Benutzer nicht Teil dieses Datensatzes sind.

Sie können sie aus der Tabelle customer_entity löschen.

Beispiel SQL von einer Site, die ich bereinigt habe: Erstellen Sie Ihre eigene, da es Ihre Umstände berücksichtigen müsste. Ihr Datensatz usw. macht mich nicht verantwortlich, wenn Sie falsche Benutzer löschen, die zuerst ein Backup erstellen!

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

Stellen Sie sicher, dass das alte grundlegende Magento Captcha deaktiviert ist. Kunden> Kundenkonfiguration> CAPTCHA

Aktivieren Sie CAPTCHA in Storefront: Nein

Da es zu Konflikten mit Google reCAPTCHA kommen wird ...

Offizielle Dokumentationslinks:

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

Die Bots scheinen nur den Endpunkt für die Kontoerstellung zu erreichen (Ja, auch wenn Sie die Schaltflächen / Links zum Erstellen eines Kontos aus Ihrem Thema löschen). Es wird jedoch empfohlen, ihre Konten zu löschen oder zu deaktivieren, da sie bis zu einem späteren Zeitpunkt schlafen und andere Dinge spammen können und Speicherplatz verbrauchen deine DB sowieso ....

Allen viel Glück.

Liam Mitchell
quelle
0

Sie können die Domänen einfach blockieren und die Fehlermeldung festlegen, die angezeigt wird, wenn ein Benutzer versucht, sich bei einer E-Mail-Domäne in Ihrer Sperrliste zu registrieren. Die vollständigen Anweisungen lauten wie folgt:

Erstellen Sie ein neues Modul mit dem Namen EmailCheck im Ordner Ecomsolver

Schritt - 1 Schreiben Sie den folgenden Code in das Admin-Panel. Der Pfad der Datei lautet -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>

Schritt - 2 Schreiben Sie den folgenden Code in eine Datei. Der Pfad der Datei lautet - 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>

Schritt - 3 Schreiben Sie den folgenden Code in eine XML-Datei mit dem Namen Config. Der Pfad der Datei lautet -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>

Schritt - 4 Schreiben Sie den folgenden Code in eine XML-Datei mit dem Namen Module. Der Pfad der Datei lautet -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>

Schritt - 5 Erstellen Sie den Ordnernamen Model in EmailCheck. Erstellen Sie dann einen Unterordner Plugin > Controller > Account. Schreiben Sie den folgenden Code in die PHP-Datei mit dem Namen RestrictCustomerEmail. Pfad der PHP-Datei wird sein -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
quelle
-1

Ich habe es behoben, indem ich den folgenden Code zu .htaccess als Debugging-Los hinzugefügt habe. Ich habe nichts gefunden, aber als ich ein Ereignis beim Speichern des Kunden erstellt habe, nachdem ich dies erhalten habe und es jetzt wieder entfernt wurde.

<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
quelle
Hallo, danke für deine Antwort. Was macht das oben Genannte genau und wie haben Sie beschlossen, Gecko usw. ins Visier zu nehmen?
Brackfost
2
Ich habe es durch ein Kundenspeicherereignis erkannt. Das sind russische Bots. Sie können sie also mit diesem Code deaktivieren. Auch wenn es nicht funktioniert, müssen Sie ein Ereignis schreiben, wenn der Kunde ein Protokoll für $ _Server und $ _request speichert und schreibt, und es dann debuggen
Sukumar Gorai
Benutzeragenten gefunden: Mozilla / 5.0 (Windows NT 6.1; Win64; x64) AppleWebKit / 537.36 (KHTML, wie Gecko) Chrome / 62.0.3202.94 Safari / 537.36 und Mozilla / 5.0 (Windows NT 10.0; WOW64; rv: 45.0) Gecko / 20100101 Firefox / 45.0
DependencyHell
Jetzt können Sie es in Ihrem htaccess hinzufügen und das Problem lösen
Sukumar Gorai
Wir können diesen Benutzeragenten nicht blockieren, da wir viele Besucher mit diesem haben. Dieser spezifiziert keinen berühmten Bot, sondern einen allgemeinen Benutzeragenten ...
DependencyHell