Recaptcha e Cadastro Fantasmas 2.4.8.3

Pessoal,
Recentemente recebemos inúmeros cadastro falsos, mesmo com o Captcha do OJS habilitado. Fizemos a atualização para o ReCaptcha v2 do Google.

Pesquisei aqui no fórum e achei os tópicos abaixo. Entretanto, estes tópicos apresentam as soluções que nós já implementamos as soluções. O problema é que mesmo implementando o Recaptcha do Google somente hoje exclui 246 usuários fantasmas. O sistema tem https. https://www.periodico.ebras.bio.br/ojs/index.php/ebras/user/register
http://forum.ibict.br/t/invasao-na-revista-cadastro-de-usuarios-falsos/1691
http://forum.ibict.br/t/usuario-spam-aumento-da-seguranca-no-momento-do-cadastro/259

@wcostarodrigues,

pode ser que o codigo da sua instalação OJS tenha sido modificada por algum invasor… vc ja verificou se esta igual a distribuição original?

alem do recaptcha vc pode habilitar a confirmação via email , editando o arquivo config.inc.php e ativando a diretiva require_validation conforme indicado em

PS: como vc esta identificando e excluindo os usuário falsos?

ronniebrito
Inicialmente agradeço sua contribuição ela foi importante, mas não funcionou, conforme relato abaixo
A dica do require_validation é bem interessante, mas gera problemas, pois habilitei e o sistema apresentou erro, geral no sistema, como se a diretiva não fosse parte dele ou reconhecida por ele.

Fiz uma verificação no config.inc.php e sempre que alteramos, fazemos comentário e mantemos um banco de versões dos arquivos.

Não acreditamos em invasão ou alteração de código, pois mantemos sempre controle de versões SVN

Quanto á eliminação dos fantasmas, procedemos da seguinte forma.
A verificação é manual através do software MYSQL-Front ou HeidiSQL e baseado em alguns critérios, principalmente nome de usuário incoerente, campo url e data de cadastro e último acesso idênticos.
Fazemos um backup da tabela e depois procedemos a eliminação.

uma alternativa seria monitorar os logs de acesso pra identificar por qual caminho esses novos usuarios são criados

a questao do require_validation poderia ser analisada com mais detalhes se vc mandar aqui o erro que eh exibido… pelo que reparei ela funciona a partir da versao 3.1

se vc puder, compartilha aqui a consulta feita via SQL para identficar e apagar os usuarios fantasmas… pois isso acontece com muitas instalações e seria bem util essa informação!

Verificaremos os Logs (ótima ideia)
Quanto as mensagem apresentada de erro, não vejo sentido apresentar aqui, pois a diretiva é incompatível com a versão 2.4.8 e portanto,basta que o usuário saiba dessa informação.

Quanto a consulta SQL, como informei a exclusão é feita através de dois software, usamos um ou outro, e como são software Front-end, não há a necessidade de informar o SQL para o comando Delete, mas tão somente selecionar os registro no Grid e clicar no botão Delete de um ou de outro software.

me confundi com essa questao de versoes,… me desculpe…

sobre o SQL, poderia ser o usado pra vc selecionar os usuarios… ou mesmo apenas os criterios… sei q muitos usam emails com final .cz , ou mesmo um critério pode ser os usuarios que estao na tabela ‘users’ mas nao possuem papel designado… ou entao nao tem atividade no sistema (submissoes , por exemplo)

Ronnei Brito,
Sim, concordo com você quanto aos critérios a serem inputados no comando SQL. Entretanto quando me referi a exclusão manual, quis dizer, que não há nenhum script sendo rodado de forma automática, mas sim a avaliação dos cadastros com base nas suas características, tínhamos habilitado o plugin Stop Forum Spam que era uma beleza, funcionava que era uma maravilha, mas por algum motivo o servidor desabilitou a diertriz de segurança que chamava o curl_exec(). Entrei em contato agora com o suporte para solução do caso.

1 curtida

Fica aqui uma observação para todos a curl_exec() em muito servidores foram e devem ser desabilitado, para versões do PHP inferior a 5.6 por questões de segurança. O host da EntomoBrasilis nos informou que havia desabilitado, mas sem prévio aviso. Pedimos a habilitação de uma versão mais nova do PHP, caso não seja possível faremos a migração do servidor e por conseguinte da versão para 3.1.

1 curtida

Prezados

Gostaria de uma ajuda. Estamos com esse problema de cadastros fantasmas. São mais de 200 mil. Gostaria de saber a única opção é apagar manualmente um por um, ou tem algum método. Se tiver gostaria de ajuda com isso, um direcionamento. Não sei o que fazer com isso.

Desde já agradeço a atenção.

1 curtida

Eliminar os cadastros fantasmas através de uma parametrização de dados e com uso de script no MySQL é a melhor solução, pois são três tabelas afetadas por esse processo e fazer a intervenção manual além de demorado é dispendioso.

www.antsoft.com.br

Olá @bdeandrade

O OJS tem um script para eliminação de usuários por linha de comando que faz um tipo de “remoção segura”. A referência para usuários cadastrados no sistema ocorre em mais de uma tabela, eliminar manualmente faria com que possíveis submissões ou atividades ficassem órfãs e possam até causar problemas em futuras atualizações.

A ferramenta no terminal pode ser invocada pelo comando:

$ php tools/mergeUsers.php

Ela vai retornar a ajuda do script, resumidamente o que ela faz é pegar o user que é spam e mesclar o histórico de submissões e atividades em outro. O que podes fazer é criar um user somente para isso, por exemplo “spam” e mesclar todos os usuários que quiser neste. Exemplo:

$ php tools/mergeUsers.php spam usernameFantasma1

O usernameFantasma1 será mesclado ao spam e removido do sistema com segurança. O que podes fazer é: verificar na tabela users do OJS, todos os usuários que tem a data de cadastro e last_login iguais. Geralmente spammers só se cadastram e se logam uma vez, na mesma data. Existem outros critérios, mas este é um inicial. É bom verificar se no meio destes usuários não existem falsos positivos, como usários que sao pareceristas (o login de pareceristas não é registrado conforme a versao do OJS, por isso pode parecer que nunca se logam).

Gere então um txt com a lista de usernames (ex.: spammers.txt), um embaixo do outro:

usernameFantasma1
usernameFantasma2
usernameFantasma3
usernameFantasma4
...

Com essa lista, você pode fazer um arquivo em BASH script e depois rodá-lo, ele vai mesclar e remover todos os usernames nela:

#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
    php tools/mergeUsers.php spam  $line
done < "$1"

Salve esse script com algum nome, como merge.sh, dentro da pasta do OJS e mude sua permissão para execução:

$ chmod +x merge.sh

Então podes executá-lo:
$ ./merge.sh spammers.txt

Resumidamente, é isso. Espero que lhe ajude. Lembre de criar o usuário com username “spam” no seu OJS. ALém é claro de fazer backup e tudo mais antes de qualquer coisa.

Um abraço
Israel Cefrin
PKP Team

2 curtidas