Impedir o registro de conta de spam

10

Como impedir o registro da conta de spam, além de ativar o CAPTCHA nos formulários (que eu já tentei)? Estamos lidando com uma inundação constante deles.

O primeiro nome do campo é sempre caracteres russos, portanto, se não for uma rota mais fácil, talvez seja uma maneira de detectar um determinado caractere e bloquear o registro nesse caso?

brackfost
fonte
Ou se alguém teve problemas semelhantes, mas teve sorte com os módulos, etc., informe-me.
Brackfost

Respostas:

15

Passamos pelo mesmo problema, a limitação do comprimento máximo frontal foi ignorada facilmente (tente você mesmo removendo a classe length-length-length-25 do html).

Então, aqui está o que eu encontrei:

  • Solução 1: Bloqueio via IP: cada assinatura de conta usa um IP diferente da Colômbia para o Vietnã ...

  • Solução 2: Bloqueio via agente do usuário: pode ser falsificado ... Funciona se você deseja limitar os borrões dos rastreadores.

  • Solução 3: Use HoneyPot: may funciona, mas se o bot já o focou, acho que certamente sabe quais campos publicar (consulte: https://magento.stackexchange.com/a/104261/50635 )

  • Solução 4: Captcha (Magento ou Google): pode funcionar, mas algumas pessoas disseram que foi ultrapassada

  • Solução 5: edite o modelo de email e adicione o email de confirmação :

    • A remoção de dados de entrada como {{var customer.name}}, {{var customer.firstname}} do modelo /app/locale/[localeorgeous/template/email/account_new.html pode impedir que um pouco seja marcado como spam.
    • Adicione a confirmação de email: Sistema> Configuração> Configuração do Cliente> Exigir Confirmação de Email> Sim
  • Solução 6: atualize as regras de limitação de campos do banco de dados: diretamente na tabela customer_eav_attribute , atualize as linhas com attribute_id = 5 [firstname] e attribute_id = 7 [lastname] e substitua 255 por 25 :

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

A solução 6 parece a maneira mais rápida e eficaz de evitar spambots, pois eles usam mais de 25 caracteres.

Desde então, não foi criada mais conta falsa! Problema resolvido.


Se eles tentarem com menos, isso os restringirá ao menos na tentativa de phishing.

Você pode verificar quantos usuários já possuem um nome ou sobrenome com mais de 25 caracteres, no nosso caso, realmente menores:

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

Para obter mais informações sobre por que essas contas falsas são registradas, leia aqui: https://magento.stackexchange.com/a/240710/50635

DependencyHell
fonte
11
Oi, Para a solução 6 que você mencionou acima. O que devo fazer pelo Magento 2.2.6? meus validate_rules mostram "{" max_text_length ": 225," min_text_length ": 1}" e também há um input_filter: "trim". devo remover isso e apenas editar os 225 a 25? graças
Kris Wen
Tente substituir 225 por 25 e, em seguida, teste se funciona
DependencyHell
2
Eu tentei substituir 225 por 25 e retire o "trim" ontem, mas ainda estou recebendo novos spams hoje. i abriu uma nova pergunta agora: magento.stackexchange.com/questions/266564/...
Kris Wen
1

Considerando que estamos falando de registro de conta, parece que você está no caminho certo. Você já tentou alterar o assunto do registro de e-mail?

provavelmente está em app / locale / yourlanguage / template / email / account_new.html

Marcony Monteiro
fonte
1

Como observação complementar, excluí as contas de spam com o seguinte código:

$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();
  }
}
brackfost
fonte
Isso não resolve o problema
Gezzasa
Pessoalmente, usei a solução 6. do DependencyHell. Só queria incluir isso no caso de alguém precisar excluir em massa o spam russo.
Brackfost
Oi, como devo executar esse código? Estou no Magento 2.2.6. obrigado #
22419 Kris Wen
Hey @KrisWen, não tenho certeza se isso fará outros usuários revirarem os olhos, mas eu apenas colocaria um modelo em seu módulo personalizado. No meu caso, eu o coloquei e, em App/Code/Ibex/Deleter/view/frontend/templates/customer.phtmlseguida, criei um deleter_index_index.xmlarquivo Deleter/view/frontend/layoutcom <block class = "Ibex \ Deleter \ Block \ Delete" name = "delete" template = "Ibex_Deleter :: character.phtml" /> lá para que quando você acessa seu site.com/deleter, o código seria executado. Apenas certifique-se de desativar e excluir o módulo posteriormente.
brackfost 18/03/19
haha obrigada! @TryingestFool Tenho alguma confusão sobre a resposta original selecionada. você sabe? -> "Oi, para a solução 6 que você mencionou acima. O que devo fazer com o Magento 2.2.6? Meus validate_rules mostram" {"max_text_length": 225, "min_text_length": 1} "e também existe um input_filter: "trim". devo remover o trim e apenas editar o número de 225 para 25? "
Kris Wen
1

Use o cloudflare ou algum outro firewall para bloquear alguns países, se puder. China, Hong Kong, Rússia. No entanto, isso não interrompe todo o spam e não funciona se você precisar que esses países possam acessar, é claro. Mas foi útil deixar-me usar o painel de administração, pois o servidor estava sendo martelado com bastante força.

Ative a compilação no Google Recaptcha ou use um plug-in alternativo se você não atualizou o Magento para 2.3.0+

No Magento 2.3, para ativar o reCAPTCHA incorporado no Google.

1) Visite Stores> Configurações> Configuração> Segurança> Google reCAPTCHA 2) Gere Recaptcha invisível recaptcha v2 ou não sou um bot keys. 3) Digite-os na configuração de administrador nessa página e ative-o no front-end para Usar em Criar usuário.

A ativação de outros recursos também não pode prejudicar.

Para limpar contas existentes, encontre padrões em suas entradas e crie consultas para selecioná-los, garantindo que seus usuários normais não façam parte desse conjunto de dados.

Você pode excluí-los da tabela customer_entity.

Exemplo de SQL de um site que eu limpei: Crie o seu próprio, pois seria necessário ter em mente as suas circunstâncias, o seu conjunto de dados etc. não me responsabilize se você limpar os usuários errados, faça o backup primeiro!

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

Verifique se o Magento Captcha básico antigo está desativado. Clientes> Configuração do Cliente> CAPTCHA

Ativar CAPTCHA na montra: Não

Como entrará em conflito com o Google reCAPTCHA ...

Links para documentação oficial:

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

Os bots parecem atingir o ponto de extremidade de criação da conta (sim, mesmo que você exclua os botões / links Criar conta do seu tema), mas é recomendável excluir as contas ou desativar o sistema, pois eles podem dormir até mais tarde e enviar spam a outras coisas. seu DB de qualquer maneira ....

Boa sorte a todos.

Liam Mitchell
fonte
0

Você pode facilmente bloquear os domínios e definir a mensagem de erro a ser exibida quando um usuário tentar se registrar com um domínio de email na sua lista de bloqueios. As instruções completas são as seguintes -

Crie um novo módulo com o nome EmailCheck na pasta Ecomsolver

Etapa - 1 Escreva o seguinte código no painel de administração. O caminho do arquivo será -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>

Etapa - 2 Escreva o seguinte código em um arquivo. O caminho do arquivo será - 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>

Etapa 3 - Escreva o seguinte código no arquivo XML com o nome Config. O caminho do arquivo será -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>

Etapa - 4 Escreva o seguinte código no arquivo XML com o nome Module. O caminho do arquivo será -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>

Etapa - 5 Crie o nome da pasta Modelo no EmailCheck. Em seguida, crie a subpasta Plugin > Controller > Account. Escreva o seguinte código no arquivo php com o nome RestrictCustomerEmail. O caminho do arquivo php será -Ecomsolver >EmailCheck > Plugin > Controller > Account > RestrictCustomerEmail

/*Ecomsolver @@@@@@ [email protected]*/ 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();
}
}
Ecomsolver Private Limited
fonte
-1

Eu o resolvi adicionando o código a seguir ao .htaccess como lote de depuração. Não encontrei nada, mas ao criar um evento no cliente, salve depois que eu recebi isso e, em seguida, seu cancelamento agora.

<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>
Sukumar Gorai
fonte
Oi, obrigado pela sua resposta. O que o acima faz exatamente, e como você determinou direcionar o Gecko, etc?
brackfost 12/07/2018
2
Eu o detecte pelo evento de salvamento do cliente. Isso é bots russos. Então você pode desativá-los por esse código. Além disso, se não funciona, então você também precisa escrever um evento quando o cliente economiza e log de gravação para $ _SERVER e $ _REQUEST, em seguida, depurá-lo
Sukumar Gorai
Agentes do usuário encontrados: Mozilla / 5.0 (Windows NT 6.1; Win64; x64) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 62.0.3202.94 Safari / 537.36 e Mozilla / 5.0 (Windows NT 10.0; WOW64; rv: 45.0) Gecko / 20100101 Firefox / 45.0
DependencyHell
Agora você pode adicioná-lo na sua htaccess e resolver a questão
Sukumar Gorai
Não podemos bloquear este agente do usuário porque temos muitos visitantes com este. Este não especificar um bot famoso, mas um agente comum de usuário ...
DependencyHell