スパムアカウントの登録を防止する


10

フォームでCAPTCHAを有効にする以外に、スパムアカウントの登録を防ぐ方法(既に試した)は?私たちはそれらの着実な洪水に対処しています。

名のフィールドは常にロシア語の文字であるため、より簡単なルートに失敗します。特定の文字を検出してその場合に登録をブロックする方法でしょうか?


または、誰かが同様の問題を抱えていて、モジュールなどで運が良ければ、私に知らせてください。
brakfost 2018

回答:


15

同じ問題が発生しましたが、前のmaxlength制限は簡単に回避されました(htmlからmaximum-length-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/[locale]/template/email/account_new.htmlテンプレートから削除すると、ビットがスパムとしてマークされるのを防ぐことができます。
    • メールの確認を追加します。[システム]> [構成]> [お客様の構成]> [メールの確認が必要]> [はい]
  • 溶液6 :更新データベースから制限ルールをフィールドに直接にcustomer_eav_attributeすると、テーブル更新行をATTRIBUTE_ID = 5 [姓]とATTRIBUTE_ID = 7 [LASTNAME]と交換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: "trim"もあります。それを削除して、225から25に編集するだけですか?感謝
クリスウェン

225を25に置き換えてみて、機能するかどうかをテストする
DependencyHell

2
225を25に置き換えてみましたが、昨日は「トリム」を削除しましたが、今日でも新しいスパムを取得しています。私はちょうど今、新しい質問を開いた:magento.stackexchange.com/questions/266564/...
クリス・ウェン

1

私たちはアカウント登録について話していることを考えると、あなたは正しい方向に進んでいるようです。メール登録件名を変更してみましたか?

おそらくapp / 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 '27 / 12/18

個人的には、DependencyHellのソリューション6を使用しました。他の誰かがロシアのスパムを大量削除する必要がある場合に備えて、これを含めたかっただけです。
1812

こんにちは、このコードをどのように実行する必要がありますか?私はmagento 2.2.6を使用しています。感謝
クリスウェン

@KrisWenさん、これで他のユーザーが目を丸めるかどうかはわかりませんが、カスタムモジュールにテンプレートを追加するだけです。私の場合、私はそれを立ち往生App/Code/Ibex/Deleter/view/frontend/templates/customer.phtml作った後とdeleter_index_index.xmlで、ファイルをDeleter/view/frontend/layoutそのときにそこに<ブロッククラス=「アイベックス\ DELETER \ブロック\削除」名前=「削除」テンプレート=「Ibex_Deleter :: character.phtml」/>とコードが実行されるyoursite.com/deleterに移動します。後でモジュールを非アクティブ化して削除してください。
brakfost

はははありがとう!@TryingestFool元の選択された回答について混乱があります。たまたま知っていますか?->「こんにちは。上記のソリューション6について。Magento2.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)それらをそのページの管理設定に入力し、フロントエンドで有効にして、ユーザーの作成で使用できるようにします。

ただし、他の機能を有効にしても、実際には害はありません。

既存のアカウントをクリーンアップするには、入力のパターンを見つけ、それらを選択するクエリを作成しますが、通常のユーザーはそのデータセットの一部ではありません。

それらは、customer_entityテーブルから削除できます。

クリーンアップしたサイトからの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

ストアフロントでキャプチャを有効にする:いいえ

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

ボットはアカウント作成のエンドポイントに到達したように見えます(テーマから[アカウントを作成]ボタン/リンクを削除しても可能です)。ただし、ボットはアカウントを削除するか非アクティブ化することをお勧めします。とにかくあなたのDB ...

皆さん頑張ってください。


0

ブロックするドメインを簡単に設定し、ユーザーがブロックリストのメールドメインに登録しようとしたときに表示されるエラーメッセージを設定できます。詳細な手順は次のとおりです–

EcomsolverフォルダーにEmailCheckという名前の新しいモジュールを作成します。

ステップ– 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次のコードをConfigという名前のXMLファイルに記述します。ファイルのパスは–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 Moduleという名前の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でフォルダー名Modelを作成します。次に、サブフォルダーを作成しますPlugin > Controller > Account。次のコードを、RestrictCustomerEmailという名前のphpファイルに記述します。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に追加して解決しましたが、何も見つかりませんでしたが、これを取得した後、顧客の保存で1つのイベントを作成すると、再び愛されました。

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

こんにちは、あなたの応答をありがとう。上記は正確には何をしているのですか、またGeckoなどをターゲットとすることをどのように決定しましたか?
Brakfost 2018

2
カスタマーセーブイベントで検出しました。これはロシアのボットです。したがって、そのコードでそれらを無効にすることができます。また、機能しない場合は、顧客が$ _Serverと$ _requestのログを保存して書き込むときにイベントを書き込む必要があります。その後、デバッグします
Sukumar

見つかったユーザーエージェント:Mozilla / 5.0(Windows NT 6.1; Win64; x64)AppleWebKit / 537.36(KHTML、like Gecko)Chrome / 62.0.3202.94 Safari / 537.36 and Mozilla / 5.0(Windows NT 10.0; WOW64; rv:45.0)Gecko / 20100101 Firefox / 45.0
DependencyHell

これで、htaccessに追加して問題を解決できます
Sukumar Gorai

このユーザーエージェントには多くの訪問者がいるため、このユーザーエージェントをブロックすることはできません。これは有名なボットではなく、一般的なユーザーエージェントを指定しています...
DependencyHell
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.