Cegah Pendaftaran Akun Spam


10

Bagaimana mencegah pendaftaran akun spam, selain mengaktifkan CAPTCHA pada formulir (yang sudah saya coba)? Kami sedang menghadapi banjir yang stabil dari mereka.

Bidang nama depan selalu karakter Rusia, jadi gagal dengan rute yang lebih mudah, mungkin cara untuk mendeteksi karakter tertentu dan memblokir pendaftaran dalam kasus itu?


Atau jika ada yang memiliki masalah serupa tetapi memiliki keberuntungan dengan modul, dll, tolong beri tahu saya.
brackfost

Jawaban:


15

Kami mengalami masalah yang sama, batasan maxlength depan dilewati dengan mudah (coba sendiri dengan menghapus kelas maksimum-panjang-25 dari html).

Jadi inilah yang saya temukan:

  • Solusi 1: Memblokir melalui IP: setiap langganan akun menggunakan IP yang berbeda dari Kolombia ke Vietnam ...

  • Solusi 2: Memblokir melalui agen Pengguna: dapat dipalsukan ... Ini berfungsi jika Anda ingin membatasi titik perayap.

  • Solusi 3: Gunakan HoneyPot: mungkin berhasil, tetapi jika bot sudah memfokuskan Anda, saya pikir pasti tahu bidang mana yang akan dikirim (lihat: https://magento.stackexchange.com/a/104261/50635 )

  • Solusi 4: Captcha (Magento atau Google): mungkin berfungsi tetapi beberapa orang mengatakan itu dilewati

  • Solusi 5: Edit templat email dan Tambahkan email konfirmasi :

    • Menghapus data input seperti {{var customer.name}}, {{var customer.firstname}} dari /app/locale/[locale[/template/email/account_new.html templat dapat mencegah sedikit ditandai sebagai spam.
    • Tambahkan konfirmasi email: Sistem> Konfigurasi> Konfigurasi Pelanggan> Memerlukan Konfirmasi Email> Ya
  • Solusi 6: Perbarui aturan pembatasan bidang dari database: langsung di tabel customer_eav_attribute , perbarui baris dengan atribut_id = 5 [nama depan] dan atribut_id = 7 [nama belakang] dan ganti 255 dengan 25 :

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

Solusi 6 tampaknya cara tercepat dan lebih efektif untuk mencegah robot spam, karena mereka menggunakan lebih dari 25 karakter.

Sejak itu, TIDAK ADA LEBIH BANYAK ACCOUNT PALSU! Masalah terpecahkan.


Jika mereka mencoba dengan lebih sedikit, itu setidaknya akan membatasi mereka dalam upaya phishing mereka.

Anda dapat memeriksa berapa banyak pengguna yang memiliki nama depan atau nama belakang lebih dari 25 karakter, dalam kasus kami, sangat kecil:

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

Untuk informasi lebih lanjut mengapa akun palsu ini terdaftar, baca di sini: https://magento.stackexchange.com/a/240710/50635


1
Hai, Untuk solusi 6 yang Anda sebutkan di atas. Apa yang harus saya lakukan untuk Magento 2.2.6? validate_rules saya menunjukkan "{" max_text_length ": 225," min_text_length ": 1}", dan ada juga input_filter: "trim". haruskah saya menghapus itu, dan hanya mengedit 225 hingga 25? terima kasih
Kris Wen

Cobalah untuk mengganti 225 dengan 25, kemudian tes jika berhasil
DependencyHell

2
saya mencoba mengganti 225 dengan 25, dan mengeluarkan "trim" kemarin, tetapi masih mendapatkan spam baru hari ini. saya membuka pertanyaan baru sekarang: magento.stackexchange.com/questions/266564/…
Kris Wen

1

Menimbang bahwa kita berbicara tentang Pendaftaran Akun, sepertinya Anda berada di jalan yang benar. Sudahkah Anda mencoba mengubah subjek pendaftaran email?

itu mungkin ada di app / locale / yourlanguage / template / email / account_new.html


1

Sebagai catatan tambahan, saya menghapus akun spam dengan kode berikut:

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

Ini tidak menyelesaikan masalah
Gezzasa

Secara pribadi, saya menggunakan solusi DependencyHell 6. Hanya ingin memasukkan ini jika ada orang lain yang perlu menghapus secara massal spam Rusia.
brackfost

Hai, bagaimana saya harus menjalankan kode ini? Saya menggunakan Magento 2.2.6. terima kasih
Kris Wen

Hai @KrisWen, saya tidak yakin apakah ini akan membuat pengguna lain memutar mata mereka, tapi saya hanya akan memasukkan templat ke dalam modul khusus Anda. Dalam kasus saya, saya memasukkannya ke dalam App/Code/Ibex/Deleter/view/frontend/templates/customer.phtmldan kemudian membuat deleter_index_index.xmlfile Deleter/view/frontend/layoutdengan <block class = "Ibex \ Deleter \ Block \ Delete" name = "delete" template = "Ibex_Deleter :: character.phtml" /> di sana sehingga ketika Anda pergi ke yoursite.com/deleter kode akan dijalankan. Pastikan untuk menonaktifkan dan menghapus modul setelahnya.
brackfost

haha terima kasih! @TryingestFool Saya bingung tentang jawaban asli yang dipilih. apakah kamu tahu -> "Hai, Untuk solusi 6 yang Anda sebutkan di atas. Apa yang harus saya lakukan untuk Magento 2.2.6? Validate_rules saya menunjukkan" {"max_text_length": 225, "min_text_length": 1} ", dan ada juga input_filter: "trim". haruskah saya menghapus trim, dan cukup edit angka dari 225 menjadi 25? "
Kris Wen

1

Gunakan cloudflare atau firewall lain untuk memblokir beberapa negara jika Anda bisa. Cina, Hong Kong, Rusia. Namun ini tidak menghentikan semua spam dan tidak berfungsi jika Anda memerlukan negara-negara tersebut untuk dapat mengakses tentunya. Tapi itu membantu untuk membiarkan saya benar-benar menggunakan panel admin karena server semakin dipalu.

Aktifkan build di Google Recaptcha atau gunakan plugin alternatif jika Anda belum memperbarui Magento ke 2.3.0+

Di Magento 2.3 untuk mengaktifkan reCAPTCHA bawaan di Google.

1) Kunjungi Toko> Pengaturan> Konfigurasi> Keamanan> Google reCAPTCHA 2) Hasilkan Recaptcha v2 recaptcha tak terlihat atau saya bukan kunci bot. 3) Masukkan mereka ke admin config di halaman itu dan aktifkan di frontend untuk Gunakan di Buat pengguna.

Mengaktifkan fitur lain juga tidak ada salahnya.

Untuk membersihkan akun yang ada, temukan pola dalam input mereka dan buat kueri untuk memilihnya sambil memastikan pengguna normal Anda bukan bagian dari set data itu.

Anda dapat menghapusnya dari tabel customer_entity.

Contoh SQL dari situs yang saya bersihkan: Buat milik Anda sendiri karena perlu memperhatikan keadaan Anda, dll. Dataset Anda tidak membuat saya bertanggung jawab jika Anda menghapus pengguna yang salah, buat cadangan terlebih dahulu!

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

Pastikan Captcha Magento dasar lama dinonaktifkan. Pelanggan> Konfigurasi Pelanggan> CAPTCHA

Aktifkan CAPTCHA di Etalase: Tidak

Karena akan bertentangan dengan Google reCAPTCHA ...

Tautan dokumentasi resmi:

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

Bot sepertinya mengenai titik akhir pembuatan akun (Ya walaupun Anda menghapus tombol / tautan Buat Akun dari tema Anda) tetapi menghapus akun mereka atau menonaktifkannya disarankan karena mereka bisa tidur sampai nanti dan mengirim spam ke hal-hal lain dan mereka menggunakan ruang dalam Lagipula DB Anda ....

Semoga beruntung semuanya.


0

Anda dapat dengan mudah menempatkan domain untuk diblokir dan mengatur pesan kesalahan yang akan ditampilkan ketika pengguna mencoba mendaftar dengan domain email pada daftar blokir Anda. Instruksi lengkap adalah sebagai berikut -

Buat modul baru dengan nama EmailCheck di folder Ecomsolver

Langkah - 1 Tulis kode berikut di panel admin. Path file akan menjadi -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>

Langkah - 2 Tulis kode berikut dalam file. Path file akan menjadi - 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>

Langkah - 3 Tulis kode berikut dalam file XML dengan nama Config. Path file akan menjadi -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>

Langkah - 4 Tulis kode berikut dalam file XML dengan nama Module. Path file akan menjadi -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>

Langkah - 5 Buat Model nama folder di EmailCheck. Kemudian buat subfolder Plugin > Controller > Account. Tulis kode berikut dalam file php dengan nama RestrictCustomerEmail. Path dari file php adalah -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

Saya telah mengatasinya dengan menambahkan kode berikut ke .htaccess sebagai banyak debugging, saya tidak menemukan apa pun kecuali ketika membuat satu peristiwa pada pelanggan simpan setelah saya mendapatkannya dan kemudian dipulihkan sekarang.

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

Hai, terima kasih atas tanggapan Anda. Apa yang dilakukan persis di atas, dan bagaimana Anda memutuskan untuk menargetkan Tokek, dll?
brackfost

2
Saya telah mendeteksinya oleh pelanggan menyimpan acara. Ini bot Rusia. Jadi Anda dapat menonaktifkannya dengan kode itu. Juga jika itu tidak berhasil maka Anda juga perlu menulis sebuah acara ketika pelanggan menyimpan dan menulis log untuk $ _Server dan $ _meminta lalu debug itu
Sukumar Gorai

Agen pengguna ditemukan: Mozilla / 5.0 (Windows NT 6.1; Win64; x64) AppleWebKit / 537.36 (KHTML, seperti Gecko) Chrome / 62.0.3202.94 Safari / 537.36 dan Mozilla / 5.0 (Windows NT 10.0; WOW64; rv: 45.0) Gecko / 20100101 Firefox / 45.0
DependencyHell

Sekarang Anda dapat menambahkannya di htaccess Anda dan menyelesaikan masalah
Sukumar Gorai

Kami tidak dapat memblokir agen pengguna ini karena kami memiliki banyak pengunjung dengan agen ini. Yang ini tidak menentukan bot yang terkenal, tetapi agen pengguna umum ...
DependencyHell
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.