Запобігати реєстрації спам-акаунтів


10

Як запобігти реєстрації спам-акаунтів, окрім ввімкнення CAPTCHA у формах (які я вже пробував)? Ми маємо справу з постійним потопом їх.

Поле першого імені завжди є російськими символами, тому невдача простішого маршруту, можливо спосіб виявлення певного символу та блокування реєстрації в цьому випадку?


Або якщо у когось були подібні проблеми, але пощастило з модулями тощо, будь ласка, дайте мені знати.
brackfost

Відповіді:


15

Ми пройшли через ту саму проблему, переднє обмеження максимальної довжини було легко обійти (спробуйте самостійно, видаливши з html клас максимальної довжини-25 ).

Отже ось що я знайшов:

  • Рішення 1: Блокування через IP: для кожної підписки на обліковий запис використовується інший IP - від Колумбії до В'єтнаму ...

  • Рішення 2: Блокування через користувальницький агент: його можна підробити ... Це працює, якщо ви хочете обмежити плями сканерів.

  • Рішення 3: Використовуйте HoneyPot: можливо, працює, але якщо бот уже зосередив вас, я думаю, він точно знає, які поля опублікувати (див .: https://magento.stackexchange.com/a/104261/50635 )

  • Рішення 4: Captcha (Magento або Google): може працювати, але деякі люди сказали, що це перевершено

  • Рішення 5: Редагувати шаблон електронної пошти та додати підтвердження електронною поштою :

    • Видалення вхідних даних, таких як {{var customer.name}}, {{var customer.firstname}} з шаблону /app/locale/ evidencelocaleSense/template/email/account_new.html, може запобігти позначанню біту як спаму.
    • Додайте підтвердження електронної пошти: Система> Конфігурація> Конфігурація клієнта> Потрібно підтвердження електронної пошти> Так
  • Рішення 6: Оновіть правила обмеження полів із бази даних: безпосередньо в таблиці customer_eav_attribute , оновіть рядки attribute_id = 5 [ім'я] та attribute_id = 7 [прізвище] та замініть 255 на 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;}

Рішення 6 здається найшвидшим та ефективнішим способом запобігання спам-ботам, оскільки вони використовують більше 25 символів.

Відтоді НЕ БІЛЬШЕ ФАКУЛЬНОГО ОБЛІКУ створено! Проблема вирішена.


Якщо вони спробують менше, це принаймні обмежить їх у спробі фішингу.

Ви можете перевірити, скільки користувачів вже мають ім’я чи прізвище понад 25 символів, у нашому випадку - дійсно другорядні:

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

Для отримання додаткової інформації, чому зареєстровані ці підроблені акаунти, читайте тут: https://magento.stackexchange.com/a/240710/50635


1
Привіт, за рішення 6, яке ви згадали вище. Що мені робити для Magento 2.2.6? мій validate_rules показує "{" max_text_length ": 225," min_text_length ": 1}", а також є input_filter: "обрізка". я повинен це видалити і просто змінити 225 на 25? дякую
Kris Wen

Спробуйте замінити 225 на 25, а потім перевірити, чи спрацює це
DependencyHell

2
Я спробував замінити 225 на 25, і вчора вийняв "обробку", але все ще отримую нові спами сьогодні. я відкрив нове запитання саме зараз: magento.stackexchange.com/questions/266564/…
Kris Wen

1

Враховуючи, що ми говоримо про реєстрацію облікового запису, здається, що ви на правильному шляху. Ви намагалися змінити тему реєстрації електронної пошти?

це, мабуть, у програмі / locale / yourlanguage / template / email / account_new.html


1

Як додаткову примітку, я видалив облікові записи спаму із таким кодом:

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

Це не вирішує питання
Gezzasa

Особисто я використав рішення DependencyHell 6. Просто хотів включити це на випадок, якщо хтось ще потребував масового видалення російського спаму.
brackfost

Привіт, як мені запустити цей код? я на магенто 2.2.6. спасибі
Kris Wen

Привіт, @KrisWen, я не впевнений, чи це змусить інших користувачів зазирнути очима, але я б просто вписав шаблон у ваш спеціальний модуль. У моєму випадку я вставив його, App/Code/Ibex/Deleter/view/frontend/templates/customer.phtmlа потім зробив deleter_index_index.xmlфайл Deleter/view/frontend/layoutіз <block class = "Ibex \ Deleter \ Block \ Delete" name = "delete" template = "Ibex_Deleter :: character.phtml" /> там, щоб коли ви переходите на сайт yourite.com/deleter, запускаючи код. Просто не забудьте після цього відключити та видалити модуль.
Brackfost

ха-ха, дякую! @TryingestFool У мене є деяка плутанина щодо оригінальної обраної відповіді. ти випадково знаєш? -> "Привіт, для рішення 6, яке ви згадали вище. Що мені робити для Magento 2.2.6? Мій validate_rules показує" {"max_text_length": 225, "min_text_length": 1} ", а також є input_filter: "обрізати". Чи потрібно вийняти обрізку та просто відредагувати число від 225 до 25? "
Кріс Вень

1

Використовуйте cloudflare або інший брандмауер, щоб заблокувати деякі країни, якщо можете. Китай, Гонконг, Росія. Однак це не зупиняє весь спам і не працює, якщо вам потрібні ці країни, щоб мати доступ до курсу. Але було б корисно дозволити мені реально використовувати панель адміністратора, оскільки сервер забивався досить важко.

Увімкніть збірку в Google Recaptcha або використовуйте альтернативний плагін, якщо ви не оновлювали Magento до версії 2.3.0+

У Magento 2.3, щоб увімкнути вбудовану в Google reCAPTCHA.

1) Відвідайте Магазини> Налаштування> Конфігурація> Безпека> Google reCAPTCHA 2) Створіть Recaptcha v2 невидимим recaptcha або я не бот-ключі. 3) Введіть їх у конфігурацію адміністратора на цій сторінці та ввімкніть її на передній панелі для використання у створенні користувача.

Увімкнення інших функцій, однак, теж не може зашкодити.

Для очищення існуючих облікових записів знайдіть шаблони їх введення та створіть запити для їх вибору, гарантуючи, що звичайні користувачі не є частиною цього набору даних.

Ви можете їх видалити з таблиці_спроможності клієнта.

Приклад SQL з веб-сайту, який я очистив: Створіть свій власний, як це потрібно, враховуючи ваші обставини, ваш набір даних тощо не нестиме мене за відповідальність, якщо ви викреслюєте неправильних користувачів, беруть резервну копію першими!

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

Переконайтесь, що старий базовий Magento Captcha відключений. Клієнти> Конфігурація клієнта> CAPTCHA

Увімкнути CAPTCHA на вітрині магазину: Ні

Оскільки це буде суперечити Google ReCAPTCHA ...

Офіційні посилання на документацію:

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

Боти, здається, потрапляють у кінцеву точку створення облікового запису (Так, навіть якщо ви видаляєте кнопки / посилання "Створити обліковий запис" із своєї теми), але рекомендується видаляти їхні акаунти або деактивувати, оскільки вони можуть спати до пізніше та спамувати інші речі, і вони займають багато місця в ваш БД все одно ....

Успіхів усім.


0

Ви можете легко поставити домени для блокування та встановити повідомлення про помилку, яке відображатиметься, коли користувач намагається зареєструвати домен електронної пошти у вашому списку блоків. Повна інструкція така:

Створіть новий модуль з ім'ям EmailCheck у папці Ecomsolver

Крок - 1 Напишіть наступний код на панелі адміністратора. Шлях до файлу буде -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>

Крок - 2 Запишіть у файл наступний код. Шлях до файлу буде - 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>

Крок - 3 Запишіть наступний код у XML-файл із іменем Config. Шлях до файлу буде -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>

Крок - 4 Запишіть наступний код у XML-файл з ім'ям Модуль. Шлях до файлу буде -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>

Крок - 5 Створіть ім'я папки Модель в EmailCheck. Потім створіть підпапку Plugin > Controller > Account. Напишіть наступний код у php-файл з ім'ям RestrictCustomerEmail. Шлях до файлу php буде -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

Я вирішив це, додавши наступний код до .htaccess як налагоджувальний лот, я нічого не знайшов, але коли створив одну подію на збереження клієнта після того, як я отримав це, а потім його змінити зараз.

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

Привіт, дякую за вашу відповідь. Що саме робить вищезгадане і як ви визначилися націлити на Гекко тощо?
brackfost

2
Я виявив це події збереження клієнта. Це російські боти. Таким чином, ви можете відключити їх за допомогою цього коду. Крім того, якщо він не працює , то вам також потрібно записати подія , коли клієнт економить і записи журналу за $ _SERVER і $ _REQUEST потім налагодити
Sukumar Gorai

Знайдено агентів користувача: Mozilla / 5.0 (Windows NT 6.1; Win64; x64) AppleWebKit / 537.36 (KHTML, як і Gecko) Chrome / 62.0.3202.94 Safari / 537.36 та Mozilla / 5.0 (Windows NT 10.0; WOW64; rv: 45.0) Gecko / 20100101 Firefox / 45.0
DependencyHell

Тепер ви можете додати його у свій htaccess і вирішити проблему
Sukumar Gorai

Ми не можемо заблокувати цей користувальницький агент, оскільки у нас багато відвідувачів. У цьому не вказується відомий бот, а загальний користувальницький агент ...
DependencyHell
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.