Spam Hesabı Kaydını Önleme


10

(Daha önce denediğim) formlarda CAPTCHA'yı etkinleştirmenin yanı sıra spam hesabı kaydını nasıl önleyebilirim? Bunların istikrarlı bir seli ile uğraşıyoruz.

İlk isim alanı her zaman Rus karakterleridir, bu nedenle daha kolay bir rotada başarısız olmak, belirli bir karakteri tespit etmenin ve bu durumda kaydı engellemenin bir yolu olabilir mi?


Ya da herhangi birinin benzer sorunları varsa, ancak modüller, vb. İle şansı varsa, lütfen bana bildirin.
brackfost

Yanıtlar:


15

Aynı sorunu yaşadık, ön maksimum uzunluk sınırlaması kolayca atlandı (html'den maksimum uzunluk-25 sınıfını kaldırarak kendiniz deneyin ).

İşte bulduğum şey:

  • 1.Çözüm: IP üzerinden engelleme: her hesap aboneliği Kolombiya'dan Vietnam'a farklı bir IP kullanıyor ...

  • Çözüm 2: Kullanıcı aracısıyla engelleme: taklit edilebilir ... Tarayıcı lekelerini sınırlamak istiyorsanız çalışır.

  • Çözüm 3: HoneyPot kullanın: işe yarayabilir, ancak bot zaten odaklanmışsa, hangi alanların yayınlanacağını kesinlikle bildiğini düşünüyorum (bkz: https://magento.stackexchange.com/a/104261/50635 )

  • Çözüm 4: Captcha (Magento veya Google): işe yarayabilir, ancak bazı insanlar bunun aşıldığını söyledi

  • Çözüm 5: E-posta düzenle şablonu ve onay e-ekleyin :

    • {{Var customer.name}}, {{var customer.firstname}} gibi giriş verilerinin /app/locale/[locale Genişletilmiş/template/email/account_new.html şablonundan kaldırılması, biraz spam olarak işaretlenmesini engelleyebilir.
    • E-posta onayını ekleyin: Sistem> Yapılandırma> Müşteri Yapılandırması> E-posta Onayı Gerektir> Evet
  • Çözüm 6: Güncelleme veritabanından sınırlama kuralları alanlar: doğrudan customer_eav_attribute tablo ile güncelleme satırlar attribute_id = 5 [ad] ve attribute_id = 7 [soyad] ve değiştirme 255 ile 25 :

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

Çözüm 6 , 25'ten fazla karakter kullandıkları için spam robotlarını önlemenin en hızlı ve etkili yolu gibi görünüyor.

O zamandan beri, DAHA FAKE HESABI oluşturulmadı! Sorun çözüldü.


Daha azıyla denerse, en azından kimlik avı girişimlerinde onları kısıtlar.

Halihazırda, kaç kullanıcının 25 karakterden fazla bir soyadı veya soyadı olduğunu kontrol edebilirsiniz, bizim durumumuzda gerçekten küçük:

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

Bu sahte hesapların neden kayıtlı olduğu hakkında daha fazla bilgi için burayı okuyun: https://magento.stackexchange.com/a/240710/50635


1
Merhaba, Yukarıda bahsettiğiniz çözüm 6 için. Magento 2.2.6 için ne yapmalıyım? validate_rules'im "{" max_text_length ": 225," min_text_length ": 1}" gösteriyor ve ayrıca bir input_filter: "trim" var. Bunu kaldırmalı mıyım ve sadece 225 ila 25'i mi düzenlemeliyim? teşekkürler
Kris Wen

225'i 25 ile değiştirmeyi deneyin, ardından çalışıp çalışmadığını test edin
DependencyHell

2
Ben 25 25 yerine 225 denedim ve "trim" dün çıkarmak, ama hala yeni spam bugün elde. şimdi yeni bir soru açtım: magento.stackexchange.com/questions/266564/…
Kris Wen

1

Hesap Kaydı'ndan bahsettiğimizi düşünürsek, doğru yolda olduğunuzu düşünüyoruz. E-posta kaydı konusunu değiştirmeyi denediniz mi?

muhtemelen app / locale / yourlanguage / template / email / account_new.html adresindedir


1

Ek bir not olarak, spam kodlarını aşağıdaki kodla sildim:

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

Bu sorunu çözmez
Gezzasa

Şahsen, DependencyHell'in 6. çözümünü kullandım. Sadece başka birinin Rus spam'ını toplu olarak silmesi gerektiğinde bunu dahil etmek istedim.
brackfost

Merhaba, bu kodu nasıl çalıştırmalıyım? eflatunum 2.2.6. teşekkürler
Kris Wen

Hey @KrisWen, bunun diğer kullanıcıların gözlerini devirip çeviremeyeceğinden emin değilim, ancak özel modülünüze bir şablon koyacağım. Benim durumumda, sıkışmış App/Code/Ibex/Deleter/view/frontend/templates/customer.phtmlve sonra <block class = "Ibex \ Deleter \ Block \ Delete" name = "delete" template = "Ibex_Deleter :: character.phtml" /> ile bir deleter_index_index.xmldosya yaptım Deleter/view/frontend/layoutki kodun çalışacağı siteniz.com/deleter adresine gidin. Daha sonra modülü devre dışı bıraktığınızdan ve sildiğinizden emin olun.
brackfost

haha teşekkür ederim! @TryingestFool Seçilen orijinal cevap hakkında biraz karışıklığım var. Ne oldugunu biliyor musun? -> "Merhaba, Yukarıda bahsettiğiniz çözüm 6 için. Magento 2.2.6 için ne yapmalıyım? Validate_rules'im" {"max_text_length": 225, "min_text_length": 1} "gösteriyor ve ayrıca bir input_filter var: "kırp". Döşemeyi kaldırmalı ve sadece 225 ile 25 arasındaki sayıyı mı düzenlemeliyim? "
Kris Wen

1

Mümkünse bazı ülkeleri engellemek için cloudflare veya başka bir güvenlik duvarı kullanın. Çin, Hong Kong, Rusya. Ancak bu, tüm spam'ları durdurmaz ve elbette bu ülkelerin erişebilmesi için gerekliyse çalışmaz. Ama sunucu oldukça zor dövülmüş gibi aslında yönetim panelini kullanmak için bana yardımcı oldu.

Google Recaptcha'da oluşturmayı etkinleştirin veya Magento'yu 2.3.0+ sürümüne güncellemediyseniz alternatif bir eklenti kullanın

Magento 2.3'te yerleşik Google reCAPTCHA'yı etkinleştirmek için.

1) Mağazalar> Ayarlar> Yapılandırma> Güvenlik> Google reCAPTCHA'yı ziyaret edin 2) Recaptcha v2 görünmez recaptcha oluştur veya ben bir bot anahtarı değilim. 3) Bu sayfadaki yönetici yapılandırmasına girin ve Kullanıcıda Kullan için ön uçta etkinleştirin.

Bununla birlikte, diğer özellikler için etkinleştirmek de gerçekten zarar veremez.

Mevcut hesapları temizlemek için girdilerindeki kalıpları bulun ve normal kullanıcılarınızın bu veri kümesinin bir parçası olmadığından emin olmak için bunları seçmek için sorgular oluşturun.

Bunları customer_entity tablosundan silebilirsiniz.

Temizlediğim bir siteden örnek SQL: Kendi koşullarınızı dikkate almanız gerektiği gibi kendi zanaatınızı yaratın Veri setiniz vb. Yanlış kullanıcıları silerseniz önce beni sorumlu tutmaz!

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

Eski temel Magento Captcha'nın devre dışı bırakıldığından emin olun. Müşteriler> Müşteri Yapılandırması> CAPTCHA

Mağazada CAPTCHA'yı etkinleştir: Hayır

Google reCAPTCHA ile çakışacağı için ...

Resmi dokümantasyon bağlantıları:

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

Botlar sadece hesap oluşturma bitiş noktasına ulaşmış gibi görünüyor (Temanıza Hesap Oluştur düğmelerini / bağlantılarını silseniz bile Evet), ancak hesaplarını silmek veya devre dışı bırakmak, daha sonra uyuyabilecekleri ve diğer şeyleri spam edebilecekleri ve yine de DB ....

Herkese iyi şanslar.


0

Etki alanlarını kolayca engellenecek şekilde yerleştirebilir ve bir kullanıcı engelleme listenizde bir e-posta etki alanına kaydolmaya çalıştığında hata iletisinin görüntülenmesini ayarlayabilirsiniz. Tam talimatlar aşağıdaki gibidir -

Ecomsolver klasöründe EmailCheck adlı yeni bir modül oluşturun

Adım - 1 Yönetici paneline aşağıdaki kodu yazın. Dosyanın yolu -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>

Adım - 2 Aşağıdaki kodu bir dosyaya yazın. Dosyanın yolu - 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>

Adım - 3 Aşağıdaki kodu Config adıyla XML dosyasına yazın. Dosyanın yolu -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>

Adım - 4 Aşağıdaki kodu modül ile XML dosyasına yazın. Dosyanın yolu -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>

Adım - 5 EmailCheck içinde Model klasör adını oluşturun. Ardından alt klasör oluşturun Plugin > Controller > Account. Aşağıdaki kodu RestrictCustomerEmail adıyla php dosyasına yazın. Php dosyasının yolu -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

Ben hata ayıklama lot olarak .htaccess için aşağıdaki kodu ekleyerek çözdüm, bir şey bulamadım ama sonra bu var ve sonra şimdi resloved sonra müşteri kaydetmek bir olay oluşturmak zaman.

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

Merhaba, Cevabınız için teşekkürler. Yukarıdakiler tam olarak ne yapar ve Gecko'yu vb. Hedeflemeyi nasıl belirlediniz?
brackfost

2
Müşteri kaydetme olayı tarafından tespit ettim. Bu Rus botları. Böylece bu kodla devre dışı bırakabilirsiniz. Öyle değil o zaman çalışıp çalışmadığını müşteri kazandırır ve $ _SERVER için yazma günlüğü ve $ _REQUEST sonra hata ayıklama Ayrıca, bir etkinlik ihtiyaç yaz
Sukumar Gorai

Bulunan kullanıcı aracıları: Mozilla / 5.0 (Windows NT 6.1; Win64; x64) AppleWebKit / 537.36 (KHTML, Gecko gibi) Chrome / 62.0.3202.94 Safari / 537.36 ve Mozilla / 5.0 (Windows NT 10.0; WOW64; rv: 45.0) Gecko / 20100101 Firefox / 45.0
BağımlılıkHell

Şimdi bunu htaccess'inize ekleyebilir ve sorunu çözebilirsiniz
Sukumar Gorai

Bu kullanıcı aracısını engelleyemeyiz, çünkü bu kullanıcıyla çok sayıda ziyaretçimiz var. Bu ünlü bir bot belirtmez, ancak ortak bir kullanıcı aracısı ...
DependencyHell
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.