Jak zapobiec rejestracji konta spamowego oprócz włączenia CAPTCHA w formularzach (które już wypróbowałem)? Mamy do czynienia z ich ciągłą powodzią.
Pierwsze imię to zawsze rosyjskie znaki, więc brak łatwiejszej trasy, może to sposób na wykrycie określonego znaku i zablokowanie rejestracji w takim przypadku?
magento2
magento2.1.11
nawias kwadratowy
źródło
źródło
Odpowiedzi:
Przeszliśmy przez ten sam problem, przednie ograniczenie maksymalnej długości zostało łatwo ominięte (spróbuj sam, usuwając klasę maksymalnej długości 25 z HTML).
Oto, co znalazłem:
Rozwiązanie 1: Blokowanie za pomocą adresu IP: każda subskrypcja konta używa innego adresu IP od Kolumbii do Wietnamu ...
Rozwiązanie 2: Blokowanie za pomocą agenta użytkownika: można go sfałszować ... Działa, jeśli chcesz ograniczyć liczbę przeszukiwaczy.
Rozwiązanie 3: Użyj HoneyPot: może działać , ale jeśli bot już Cię skupił, myślę, że z pewnością wie, które pola opublikować (patrz: https://magento.stackexchange.com/a/104261/50635 )
Rozwiązanie 4: Captcha (Magento lub Google): może działać, ale niektórzy twierdzą, że został przekroczony
Rozwiązanie 5: Edytuj szablon wiadomości e-mail i dodaj wiadomość e-mail z potwierdzeniem :
Rozwiązanie 6: Obszary zasady przedawnienia z bazy danych: bezpośrednio w customer_eav_attribute tabeli, aktualizować wiersze z attribute_id = 5 [Imię] i attribute_id = 7 [Nazwisko] i zastąpić 255 przez 25 :
a:2:{s:15:"max_text_length";i:255;s:15:"min_text_length";i:1;}
a:2:{s:15:"max_text_length";i:25;s:15:"min_text_length";i:1;}
Rozwiązanie 6 wydaje się najszybszym i najbardziej skutecznym sposobem zapobiegania robotom spamującym, ponieważ używają one więcej niż 25 znaków.
Od tego czasu nie utworzono WIĘCEJ FAKE KONTA! Problem rozwiązany.
Jeśli spróbują z mniejszą ilością, ograniczy to przynajmniej ich próbę phishingu.
Możesz sprawdzić, ilu użytkowników ma już imię lub nazwisko składające się z ponad 25 znaków, w naszym przypadku naprawdę niewielkie:
źródło
Biorąc pod uwagę, że mówimy o rejestracji konta, wydaje się, że jesteś na dobrej drodze. Czy próbowałeś zmienić temat rejestracji e-mail?
prawdopodobnie znajduje się w app / locale / yourlanguage / template / email / account_new.html
źródło
Jako dodatkową notatkę usunąłem konta spamowe następującym kodem:
źródło
App/Code/Ibex/Deleter/view/frontend/templates/customer.phtml
a następnie utworzyłemdeleter_index_index.xml
plikDeleter/view/frontend/layout
z <class class = "Ibex \ Deleter \ Block \ Delete" name = "delete" template = "Ibex_Deleter :: character.phtml" />, tak że kiedy wejdziesz na twoją stronę.com/deleter, aby uruchomić kod. Pamiętaj tylko, aby później wyłączyć i usunąć moduł.Użyj Cloudflare lub innej zapory ogniowej, aby zablokować niektóre kraje, jeśli możesz. Chiny, Hongkong, Rosja. Nie zatrzymuje to jednak całego spamu i nie działa, jeśli potrzebujesz, aby te kraje miały oczywiście dostęp. Pomogło mi jednak korzystać z panelu administracyjnego, ponieważ serwer był dość mocno wbijany.
Włącz kompilację w Google Recaptcha lub użyj alternatywnej wtyczki, jeśli nie zaktualizowałeś Magento do wersji 2.3.0+
W Magento 2.3, aby włączyć wbudowaną Google reCAPTCHA.
1) Odwiedź Sklepy> Ustawienia> Konfiguracja> Bezpieczeństwo> Google reCAPTCHA 2) Generuj Recaptcha v2 niewidzialną recaptcha lub nie jestem kluczem bota. 3) Wprowadź je do konfiguracji administratora na tej stronie i włącz ją w interfejsie użytkownika do użycia w Utwórz użytkownika.
Włączenie innych funkcji nie może jednak tak naprawdę zaszkodzić.
Aby wyczyścić istniejące konta, znajdź wzorce w danych wejściowych i utwórz zapytania, aby je wybrać, upewniając się, że zwykli użytkownicy nie są częścią tego zestawu danych.
Możesz je usunąć z tabeli user_entity.
Przykład SQL ze strony, którą wyczyściłem: Stwórz własną, ponieważ musiałabyś pamiętać o swoich okolicznościach, twój zestaw danych itp. Nie pociągają mnie do odpowiedzialności, jeśli wyczyścisz niewłaściwych użytkowników, najpierw wykonaj kopię zapasową!
Upewnij się, że stara podstawowa Magento Captcha jest wyłączona. Klienci> Konfiguracja klienta> CAPTCHA
Włącz CAPTCHA w witrynie Storefront: Nie
Ponieważ będzie to kolidować z Google reCAPTCHA ...
Oficjalne linki do dokumentacji:
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
Boty wydają się uderzać w punkt końcowy tworzenia konta (Tak, nawet jeśli usuniesz przyciski / łącza Utwórz konto z motywu), ale zaleca się usunięcie ich kont lub dezaktywację, ponieważ mogą spać do później i spamować inne rzeczy, a także zajmują miejsce w i tak twoja baza danych ....
Powodzenia wszystkim.
źródło
Domeny można łatwo zablokować i ustawić komunikat o błędzie wyświetlany, gdy użytkownik próbuje zarejestrować się w domenie e-mail na liście zablokowanych. Pełne instrukcje są następujące -
Utwórz nowy moduł o nazwie EmailCheck w folderze Ecomsolver
Krok - 1 Wpisz następujący kod w panelu administracyjnym. Ścieżka do pliku będzie -
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>
Krok - 2 Wpisz następujący kod do pliku. Ścieżka do pliku będzie -
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>
Krok - 3 Wpisz następujący kod w pliku XML o nazwie Config. Ścieżka do pliku będzie -
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>
Krok - 4 Wpisz następujący kod w pliku XML o nazwie Module. Ścieżka do pliku będzie -
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>
Krok - 5 Utwórz nazwę folderu Model w EmailCheck. Następnie utwórz podfolder
Plugin > Controller > Account
. Napisz następujący kod w pliku php o nazwie RestrictCustomerEmail. Ścieżka do pliku php będzie -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 {
źródło
Rozwiązałem go, dodając następujący kod do .htaccess jako partii debugującej, nie znalazłem niczego, ale kiedy utworzyłem jedno zdarzenie w zapisie klienta po tym, jak to otrzymałem, a potem jest ono ponownie zapisane.
źródło