Ngăn chặn đăng ký tài khoản spam


10

Làm cách nào để ngăn chặn đăng ký tài khoản spam, ngoài việc bật CAPTCHA trên các biểu mẫu (mà tôi đã thử)? Chúng ta đang đối phó với lũ lụt đều đặn.

Trường tên đầu tiên luôn là các ký tự tiếng Nga, vì vậy việc không thực hiện một lộ trình dễ dàng hơn, có thể là một cách để phát hiện một ký tự nào đó và chặn đăng ký trong trường hợp đó?


Hoặc nếu bất cứ ai gặp vấn đề tương tự nhưng gặp may mắn với các mô-đun, v.v., vui lòng cho tôi biết.
lợ

Câu trả lời:


15

Chúng tôi đã trải qua cùng một vấn đề, giới hạn maxlength phía trước đã được bỏ qua một cách dễ dàng (tự mình thử bằng cách xóa lớp 25 chiều dài tối đa khỏi html).

Vì vậy, đây là những gì tôi tìm thấy:

  • Giải pháp 1: Chặn qua IP: mỗi thuê bao tài khoản sử dụng một IP khác nhau từ Colombia đến Việt Nam ...

  • Giải pháp 2: Chặn thông qua Tác nhân người dùng: nó có thể bị làm giả ... Nó hoạt động nếu bạn muốn hạn chế các trình thu thập thông tin.

  • Giải pháp 3: Sử dụng HoneyPot: có thể hoạt động, nhưng nếu bot đã tập trung vào bạn, tôi nghĩ rằng nó chắc chắn biết những lĩnh vực nào sẽ đăng (xem: https://magento.stackexchange.com/a/104261/50635 )

  • Giải pháp 4: Captcha (Magento hoặc Google): có thể hoạt động nhưng một số người cho biết nó đã bị vượt qua

  • Giải pháp 5: Chỉnh sửa mẫu emailThêm email xác nhận :

    • Xóa dữ liệu đầu vào, chẳng hạn như {{var customer.name}}, {{var customer.firstname}} khỏi /app/locale/[locale[/template/email/account_new.html mẫu có thể ngăn chặn một bit bị đánh dấu là spam.
    • Thêm xác nhận email: Hệ thống> Cấu hình> Cấu hình khách hàng> Yêu cầu xác nhận email> Có
  • Giải pháp 6: Cập nhật các quy tắc giới hạn trường từ cơ sở dữ liệu: trực tiếp trong bảng customer_eav_attribution , cập nhật các hàng với property_id = 5 [Firstname] và property_id = 7 [Lastname] và thay thế 255 bằng 25 :

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

Giải pháp 6 có vẻ là cách nhanh nhất và hiệu quả hơn để ngăn chặn spam, vì họ đang sử dụng hơn 25 ký tự.

Kể từ đó, KHÔNG CÓ TÀI KHOẢN FAKE nào được tạo ra! Vấn đề được giải quyết.


Nếu họ cố gắng ít hơn, ít nhất nó sẽ hạn chế họ trong nỗ lực lừa đảo của họ.

Bạn có thể kiểm tra có bao nhiêu người dùng đã có tên hoặc họ trên 25 ký tự, trong trường hợp của chúng tôi, thực sự nhỏ:

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

Để biết thêm thông tin tại sao các tài khoản giả này được đăng ký, hãy đọc tại đây: https://magento.stackexchange.com/a/240710/50635


1
Xin chào, Đối với giải pháp 6 bạn đã đề cập ở trên. Tôi nên làm gì cho Magento 2.2.6? myateate_rules hiển thị "{" max lòng_length ": 225," min giác_length ": 1}", và cũng có một input_filter: "trim". Tôi có nên xóa nó không, và chỉ cần chỉnh sửa 225 thành 25? cảm ơn
Kris Wen

Hãy thử thay thế 225 bằng 25, sau đó kiểm tra xem nó có hoạt động không
DependencyHell

2
tôi đã cố gắng thay thế 225 bằng 25 và lấy ra "trang trí" ngày hôm qua, nhưng vẫn nhận được các thư rác mới ngày hôm nay. tôi vừa mở một câu hỏi mới: magento.stackexchange.com/questions/266564/iêu
Kris Wen

1

Xem xét rằng chúng tôi đang nói về Đăng ký tài khoản, có vẻ như bạn đang đi đúng hướng. Bạn đã thử thay đổi chủ đề đăng ký email?

nó có thể nằm trên app / locale / yourl Language / template / email / account_new.html


1

Là một lưu ý bổ sung, tôi đã xóa các tài khoản spam với mã sau:

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

Điều này không giải quyết được vấn đề
Gezzasa 27/12/18

Cá nhân, tôi đã sử dụng giải pháp của DependencyHell 6. Chỉ muốn bao gồm điều này trong trường hợp bất kỳ ai khác cần xóa hàng loạt thư rác của Nga.
lợ

Xin chào, tôi nên chạy mã này như thế nào? Tôi đang dùng magento 2.2.6. cảm ơn
Kris Wen

Xin chào @KrisWen, tôi không chắc liệu điều này có khiến người dùng khác tròn mắt không, nhưng tôi chỉ cần đặt một mẫu trong mô-đun tùy chỉnh của bạn. Trong trường hợp của tôi, tôi đã nhét nó vào App/Code/Ibex/Deleter/view/frontend/templates/customer.phtmlvà sau đó tạo một deleter_index_index.xmltệp Deleter/view/frontend/layoutvới <block class = "Ibex \ Deleter \ Block \ Delete" name = "xóa" template = "Ibex_Deleter :: character.phtml" /> ở đó để khi nào bạn truy cập yoursite.com/deleter mã sẽ chạy. Chỉ cần chắc chắn để hủy kích hoạt và xóa mô-đun sau đó.
lợ

haha cảm ơn bạn! @TryingestFool Tôi có một số nhầm lẫn về câu trả lời được chọn ban đầu. bạn có biết không -> "Xin chào, đối với giải pháp 6 mà bạn đã đề cập ở trên. Tôi nên làm gì cho Magento 2.2.6? Validate_rules của tôi hiển thị" {"max lòng_length": 225, "min lòng_length": 1} ", và cũng có một input_filter: "trim". Tôi có nên xóa phần trang trí không, và chỉ cần chỉnh sửa số từ 225 thành 25? "
Kris Wen

1

Sử dụng cloudflare hoặc một số tường lửa khác để chặn một số quốc gia nếu bạn có thể. Trung Quốc, Hồng Kông, Nga. Tuy nhiên, điều này không ngăn chặn tất cả các thư rác và không hoạt động nếu bạn cần các quốc gia đó để có thể truy cập tất nhiên. Nhưng thật hữu ích khi để tôi thực sự sử dụng bảng quản trị vì máy chủ đã bị tấn công khá khó khăn.

Kích hoạt bản dựng trong Google Recaptcha hoặc sử dụng plugin thay thế nếu bạn chưa cập nhật Magento lên 2.3.0+

Trong Magento 2.3 để kích hoạt Google reCAPTCHA tích hợp.

1) Truy cập Cửa hàng> Cài đặt> Cấu hình> Bảo mật> Google reCAPTCHA 2) Tạo Recaptcha v2 ẩn recaptcha hoặc tôi không phải là khóa bot. 3) Nhập chúng vào cấu hình quản trị viên trên trang đó và bật nó ở lối vào để sử dụng trong Tạo người dùng.

Tuy nhiên, việc kích hoạt các tính năng khác thực sự không thể làm tổn thương.

Để làm sạch các tài khoản hiện tại, hãy tìm các mẫu trong đầu vào của chúng và tạo các truy vấn để chọn chúng trong khi đảm bảo người dùng bình thường của bạn không phải là một phần của tập dữ liệu đó.

Bạn có thể xóa chúng khỏi bảng customer_entity.

Ví dụ SQL từ một trang web tôi đã dọn sạch: Tạo bản thân bạn vì nó cần phải chú ý đến hoàn cảnh của bạn, tập dữ liệu của bạn, v.v. đừng bắt tôi phải chịu trách nhiệm nếu bạn xóa nhầm người dùng trước khi sao lưu!

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

Đảm bảo Magento Captcha cơ bản cũ bị vô hiệu hóa. Khách hàng> Cấu hình khách hàng> CAPTCHA

Kích hoạt CAPTCHA trên Storefront: Không

Vì nó sẽ xung đột với Google reCAPTCHA ...

Liên kết tài liệu chính thức:

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

Các bot dường như đạt điểm cuối tạo tài khoản (Có ngay cả khi bạn xóa các nút / liên kết Tạo tài khoản khỏi chủ đề của bạn) nhưng việc xóa tài khoản của chúng hoặc hủy kích hoạt được khuyến nghị vì chúng có thể ngủ đến sau và spam những thứ khác và chúng sử dụng hết dung lượng trong DB của bạn nào ....

Chúc mọi người may mắn.


0

Bạn có thể dễ dàng đặt các tên miền để chặn và đặt thông báo lỗi được hiển thị khi người dùng cố gắng đăng ký với một tên miền email trong danh sách chặn của bạn. Hướng dẫn đầy đủ như sau -

Tạo một mô-đun mới với tên EmailCheck trong thư mục Ecomsolver

Bước - 1 Viết mã sau vào bảng quản trị. Đường dẫn của tệp sẽ là -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>

Bước - 2 Viết mã sau vào một tệp. Đường dẫn của tệp sẽ là - 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>

Bước - 3 Viết đoạn mã sau vào tệp XML với tên Config. Đường dẫn của tệp sẽ là -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>

Bước - 4 Viết mã sau vào tệp XML có tên Mô-đun. Đường dẫn của tệp sẽ là -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>

Bước - 5 Tạo tên thư mục Model trong EmailCheck. Sau đó tạo thư mục con Plugin > Controller > Account. Viết đoạn mã sau vào tệp php với tên RestrictCustomerEmail. Đường dẫn của tệp php sẽ là -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

Tôi đã giải quyết nó bằng cách thêm mã sau vào .htaccess dưới dạng gỡ lỗi, tôi không tìm thấy gì nhưng khi tạo một sự kiện về lưu khách hàng sau khi tôi nhận được mã này và sau đó nó đã được gửi lại.

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

Xin chào, cảm ơn phản hồi của bạn. Những gì ở trên làm chính xác, và làm thế nào bạn xác định để nhắm mục tiêu Gecko, vv?
lợ

2
Tôi đã phát hiện ra nó bởi sự kiện lưu khách hàng. Đây là bot của Nga. Vì vậy, bạn có thể vô hiệu hóa chúng bằng mã đó. Ngoài ra nếu nó không hoạt động thì bạn cũng cần viết một sự kiện khi khách hàng lưu và viết nhật ký cho $ _Server và $ _request sau đó gỡ lỗi
Sukumar Gorai

Tác nhân người dùng được tìm thấy: Mozilla / 5.0 (Windows NT 6.1; Win64; x64) AppleWebKit / 537.36 (KHTML, như Gecko) Chrome / 62.0.3202.94 Safari / 537.36 và Mozilla / 5.0 (Windows NT 10.0; WOW64; rv: 45.0) Gecko / 20100101 Firefox / 45.0
phụ thuộc vào

Bây giờ bạn có thể thêm nó vào htaccess của mình và giải quyết vấn đề
Sukumar Gorai

Chúng tôi không thể chặn tác nhân người dùng này vì chúng tôi có rất nhiều khách truy cập với cái này. Cái này không chỉ định một bot nổi tiếng, mà là một tác nhân người dùng thông thường ...
DependencyHell
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.