Como posso bloquear uma pessoa abusiva que tenta infinitamente registrar mais contas?

41

Eu tenho um site gratuito com registro aberto; qualquer um pode se registrar e não consigo mudar isso. No entanto, as contas devem ser aprovadas por um administrador após a conclusão de um perfil, para que eu tenha acesso a uma variedade de informações para identificar usuários duplicados (data de nascimento, comentário de "auto-introdução", endereço de email, fotos, localização relatada no perfil, IP geolocalizado). , Endereço IP etc.)

Recentemente, o site ficou sujeito aos ataques de um único usuário que é extremamente abusivo e parece ter tempo ilimitado para registrar várias contas. Essas contas podem ser bloqueadas com relativa facilidade, mas é muito trabalhoso para o administrador (eu) e tenho medo de perder uma dentre as contas legítimas (esse usuário registra cerca de 6 contas por dia).

Eu já:

  • baniu os endereços IP conhecidos do usuário
  • registro bloqueado de domínios conhecidos usados ​​para endereços de email "descartáveis"
  • adicionou uma visão especial para me ajudar a identificar contas com base em padrões conhecidos de acesso do usuário

Existe algo que eu possa fazer com cookies etc. para tornar ainda mais difícil para esse usuário se registrar?

Este é um site Drupal 7.

EDIT: No meu caso, este é um usuário humano, não um bot. Mas as respostas dos bot são úteis para aqueles que são direcionados especificamente por spammers.

Patrick Kenny
fonte
A única coisa que consigo pensar são aqueles captchas irritantes que são realmente difíceis de ler, como algumas das letras / números que você acha que podem ser duas coisas, e você deve tentar 5 vezes para adivinhar corretamente. Do lado negativo, você vai incomodar todo mundo, lol.
No Sssweat
13
drupal.org/project/misery se tudo mais falhar.
Niall Murphy
7
Na verdade, as duas primeiras soluções que você usou são idéias bastante ruins. Os endereços IP são muito inadequados para identificar exclusivamente uma rede inteira, independentemente de um computador específico e de um usuário específico! Não é incomum que um usuário compartilhe um dispositivo com muitos outros usuários, onde esse dispositivo está em uma rede com muitos outros dispositivos, todos compartilhando um único endereço IP, que é realocado regularmente pelo provedor de serviços para diferentes clientes. Proibir conjuntos inteiros de nomes de domínio de email é ainda pior. Você corre um risco real de bloquear um usuário legítimo.
JBentley
3
Ao tentar o conselho nas respostas, eu sugeriria nunca tornar a vida de seus bons usuários menos agradável por punir maus usuários. Se você fizer isso, os usuários ruins venceram e correm o risco de perder bons usuários.
ROOBY
2
Qualquer

Respostas:

51

Em vez de tentar impedir que o usuário se registre, que é um jogo para trolls e hackers, torne o site irritante. Faça com que ele queira ir embora , em vez de fazê-lo querer vencer o jogo de trollagem .

O que eu fiz no passado, não específico do Drupal, é deixar o usuário se registrar. Saboreei sua conta específica:

  1. Polvilhei if ($someuser) { sleep(rand($base, $base*2)) }o código, onde $baseaumentava diariamente. Eu me certifiquei de que ele tivesse muitos tempos limite.
  2. Eu largaria N% de seus posts, onde N começou acima de 50% e só aumentou a partir daí. Se a postagem tivesse determinadas palavras-chave, ela seria descartada imediatamente.
  3. Eu largaria aleatoriamente as regras CSS para que a página fosse exibida mal. Mais uma vez, a gravidade aumentaria com o tempo.

Isso exigiu mais esforço de minha parte, mas, de acordo com os conselhos de Sun Tzu, eu estava condicionando o usuário a odiar meu site . Queria que ele não sentisse que estava nos incomodando, mas que deveria se incomodar com os atrasos e os erros aparentes. Demorou menos de uma semana para ele desistir de nós.

EDIT : Nos comentários, o usuário rooby menciona o módulo Misery, que é baseado no mesmo conceito:

  1. Atraso : crie um atraso de tamanho aleatório, dando a aparência de uma conexão lenta. (por padrão, isso acontece 40% do tempo)
  2. Tela branca : apresente ao usuário uma tela branca. (por padrão, isso acontece 10% do tempo)
  3. Página incorreta: redirecione para um URL aleatório em uma lista predefinida. (por padrão, isso acontece 0% do tempo)
  4. Nó aleatório : redirecione para um nó aleatório acessível pelo usuário. (por padrão, isso acontece 10% do tempo)
  5. 403 Acesso negado : apresente ao usuário um erro "Acesso negado". (por padrão, isso acontece 10% do tempo)
  6. 404 Não encontrado : apresente ao usuário um erro "Não encontrado". (por padrão, isso acontece 10% do tempo)
  7. Os formulários não são enviados: redirecione novamente para o formulário durante a validação para impedir o envio. (por padrão, isso ocorre 60% do tempo) Nota: Ocasionalmente, certos formulários são validados com base em qual botão foi pressionado, mas não funciona nesses casos.
  8. Crash IE6 : se o usuário estiver usando o Internet Explorer 6, isso travará o navegador. (por padrão, isso acontece 0% do tempo)
  9. Spam : substitua o conteúdo do nó por uma palavra definida. (por padrão, isso acontece 10% do tempo)
  10. Logout : desconecte o usuário. (por padrão, isso acontece 10% do tempo)
dotancohen
fonte
8
Eu acho que isso é ótimo em teoria, mas o pensamento de codificar $someusersempre que eles criam uma nova conta me faz estremecer. Ainda assim, ótima ideia. Talvez apenas adicione um campo na tabela de contas, como uma trollcoluna. Se for 1, as alterações serão afetadas. Em seguida, adicione uma interface simples para marcar alguém como um troll. Pelo menos dessa maneira, é um pouco mais fácil do que codificar um nome de usuário / ID de usuário / email / etc. toda vez que eles se registram em uma nova conta. Voto positivo, com certeza.
Nate I
5
@ NateI você pode torná-lo reutilizável embora. if (hellbannedUsers.contains($someuser))é um passo melhor. Eu simplesmente não gosto de quanta lógica caseira é essa, em primeiro lugar, mas ela pode pelo menos ser reutilizada.
21816 djechlin
3
@djechlin É claro que pode ser reutilizado, portanto, meu próprio comentário sobre dar um passo adiante com uma tabela no banco de dados.
Nate I
3
Você pode estar interessado no módulo miséria para economizar um pouco de codificação.
ROOBY
7
Ótima resposta. Uma variante disso é deixar a troll postar e mostrar as postagens para esse usuário, mas ocultá-las para todos os outros usuários.
Zelanix
30

Envie um email para o ISP do agressor - eles vão acabar com isso!

Você tem um registro dos horários de criação da conta e os endereços IP usados ​​para se registrar, certo? Você também tem um registro de todos os comentários de assédio dele também? Envie esses logs para o provedor de serviços de Internet .

Você pode encontrar o ISP fazendo uma pesquisa de IP diretamente com o ARIN em https://whois.arin.net/ui ou outro serviço que simplesmente os use para um whois. A maioria dos usuários terá um ISP real disponível para o proprietário do IP, mas algumas (grandes empresas geralmente) serão donas do IP. De qualquer maneira, você descobrirá quem é o proprietário do IP e, a partir daí, poderá consultá-los e obter um endereço de email de abuso (às vezes eles colocam um endereço de email de abuso real nas informações do WHOIS, o que é ótimo) para enviar seu email para. Seja gentil e cortês com o ISP. Não escreva um romance épico - mantenha-o simples. Algo como "Este ip está me assediando e usuários do meu site, por favor, veja os logs" serão suficientes. Eles vêem milhares deles por dia, não querem ler uma história triste.

Eu costumava ser um engenheiro de rede em um ISP. Recebemos inúmeros relatórios de assédio por esse tipo de comportamento. No momento em que um assinante recebe a ligação, ele pára cerca de 90% do tempo. Se continuar, poderá ocorrer uma ação legal, o que significa que a maioria dos ISPs toma medidas muito sérias.

Seu agressor provavelmente é um garoto que mora em casa com seus pais , o que significa que quando a conta de internet de seus pais ameaçar ser encerrada, eles ficarão incrivelmente chateados com ele por seu comportamento.

Eu, pessoalmente, segui esse caminho e funciona, mesmo que o agressor não esteja no seu país. Os ISPs NÃO agradam os usuários de serem abusivos em sua rede.

Nota

Existe a possibilidade de ele estar usando um proxy. No entanto, é muito improvável que ele tenha usado um proxy no registro inicial, a menos que pretenda (a partir do momento em que se registrou) trollar no seu site. Se nenhum dos IPs realmente apontar para um ISP legítimo para o qual você pode realmente enviar um email de abuso, tente enviá-lo para qualquer serviço Proxy que ele esteja usando.

As pessoas têm essa ideia maluca de que, simplesmente porque alguém está usando um proxy, elas são indetectáveis. Isso é falso. Os serviços de proxy geralmente seguem as mesmas regras que todo mundo segue (é claro que há exceções). Quando recebem uma denúncia de abuso, cuidam da mesma forma que um ISP.

Na chance incrivelmente pequena de que esse usuário esteja atrás de um Proxy que não seja agradável, eu seguiria o conselho dos outros respondentes. Sério, isso é tão raro que a maioria dos proprietários de sites nunca vê um ataque de alguém aparentemente "indetectável".

Nate I
fonte
2
Esta é a única solução real . Tudo o mais que foi proposto parece ser uma solução alternativa, não uma solução.
um CVn
O Tor também pode ser um problema nesse sentido, mas se você estiver realmente com problemas, sempre haverá a opção de bloquear o tráfego originado apenas nos nós de saída do Tor . (Esse último mantém o dano colateral no mínimo.)
um CVn
Você pode me dar uma idéia de quanto tempo esse processo pode levar? Enviei as informações há 10 dias e ainda tenho que receber uma resposta de qualquer tipo, até um reconhecimento do meu relatório.
Patrick Kenny
Eu nunca recebi uma resposta real. A única coisa que eu já testemunhei nesse curso de ação é que a pessoa apenas para o que está fazendo. A pessoa ainda está assediando você e os usuários do seu site?
Nate I
17

Na sua pergunta, você não menciona ter um Captcha. Talvez, esse usuário irritante seja um bot? Meu palpite é que você já tem um captcha e esse usuário é realmente humano.

Mas ... se não for esse o caso, eu recomendaria:

reCAPTCHA

Usa o serviço da web reCAPTCHA do Google para melhorar o sistema CAPTCHA e proteger os endereços de email.

insira a descrição da imagem aqui

Sem suor
fonte
9

Hellban / shadowban

Como impedir uma pessoa de criar novas contas para substituir contas bloqueadas é quase impossível, uma solução um tanto popular para esse problema é o chamado hellban ( http://www.urbandictionary.com/define.php?term=hellban ) ou shadowban , em que você implementa um recurso que isola determinadas contas de todos os outros, sem deixar óbvio que elas foram banidas.

Por exemplo, você deve garantir que eles sintam que a experiência deles é genuína e continuar usando as mesmas contas, mas condicionar que qualquer uma de suas postagens ou atividades seja visível apenas para contas banidas pelo inferno e quaisquer contas (ou não registradas) em situações) que compartilham IP e / ou cookies com a conta do hellbanban. Se o usuário continuar a trollar, mas não obtiver resposta, ele sairá eventualmente.

Peter é
fonte
Como implementar isso no Drupal 7?
reinierpost
1
@reinierpost - caverna é uma opção para implementar esta
BryanH
7

Por sugestão de No Sssweat, estou colocando isso como uma resposta em vez de um comentário para que mais pessoas o vejam.

Drupal.org/project/misery faz um bom trabalho em irritar um usuário com cerca de oito métodos diferentes. Tempos aleatórios, logout, redirecionamentos aleatórios etc. e a frequência é variável.

Uma versão fácil da boa redação do dotancohen para o problema.

Niall Murphy
fonte
6

Que tal usar um segundo fator? No seu registro, diga que você enviará um SMS para o telefone ou e-mail e peça para que eles confirmem o registro clicando em um link e enviando as informações de volta. Você adquirirá um identificador mais difícil de falsificar do que o endereço IP e pode ser mais fácil filtrá-lo dessa maneira. Obviamente exigirá uma pequena quantidade de scripts ...

Blackbeagle
fonte
5

Na verdade é impossível.

Você não pode impedir uma pessoa de se registrar repetidamente. A única coisa que você pode fazer é endurecer o processo de registro e verificar dupla / triplamente seu ID (por meio de endereço de e -mail e conta do Google e conta do Facebook e conta e número de telefone do LinkedIn etc.) e correlacionar cada pessoa com um ID específico que agrega todos esses detalhes.

A pessoa específica pode escolher outra rede por meio de proxy da web, criar muitos @email, abrir várias contas do facebook / google / LinkedIn e assim por diante, mas você nunca poderá impedir que essa pessoa se registre novamente (a menos que verifique seu DNA).

Sua única opção é fortalecer o processo de registro.

Auzias
fonte
2
Como eu disse, exija que seus futuros usuários vinculem suas contas a uma conta exclusiva do Facebook e uma conta exclusiva do Google, uma conta exclusiva do LinkedIn e um número de telefone exclusivo para o qual você envia um SMS. Você está em uma posição muito interessante! Você não pode, sem meios realmente caros , garantir que um usuário se registre apenas uma vez. Além disso, o único meio que você pode usar irritaria seus futuros usuários (que estão dispostos a vincular uma conta ggl / SO / fb / LinkedIn / GH + a enviar seu ID pelo correio, apenas para criar uma nova conta?)
Auzias
11
Essa é uma maneira rápida de reduzir também o número de usuários genuínos.
21816 Tom.Bowen89
3
Você está argumentando que, no pior dos casos, é impossível , ou seja, se uma agência de inteligência avançada com bilhões de dólares estiver à sua disposição. Há uma chance muito boa de o OP estar lidando com um garoto de 11 anos malcriado em algum lugar. Portanto, sua resposta é um pouco impraticável e a OMI é enganosa.
21416 djechlin
2
Sua resposta se contradiz. Ele diz que você não pode, então a única maneira que você pode é fortalecer o processo de registro, o que na verdade não necessariamente resolverá o problema e também não é a única solução em potencial.
ROOBY
1
Eu sei;) ou não tiver o Google, nem LinkedIn
Auzias
4

Conforme sugerido por No Sssweat, você pode usar o reCAPTCHA. Mas se você não quiser incomodar usuários legítimos, tente o módulo Honeypot . Ele oferece a opção de ter um campo extra que não deve ser preenchido (os robôs AFAIK podem preencher todos os campos) ou ter restrição de tempo.

A documentação diz:

O Honeypot usa os métodos honeypot e timestamp para impedir que os bots de spam preencham formulários em seu site Drupal (leia mais aqui). Esses métodos são eficazes contra muitos bots de spam e não são tão intrusivos quanto os CAPTCHAs ou outros métodos que punem o usuário [YouTube].

Outra opção é o módulo Spambot , que evita spam ao verificar as tentativas de registro contra o Stop Forum Spam.

O Spambot protege o formulário de registro do usuário contra spammers e spambots, verificando as tentativas de registro no banco de dados online Stop Forum Spam (www.stopforumspam.com). Ele também adiciona alguns recursos úteis para ajudar a lidar com contas de spam.

Suresh R
fonte
3
Isso funciona para spambots, não para humanos.
user253751
3

Há uma resposta para a pergunta - embora a comunidade possa achar isso ofensivo. Não sei por que, exceto os custos, que o caminho não foi seguido com mais frequência.

Envie uma carta de cessação e desistência ao indivíduo que está invadindo seu site e que viola o Título XVIII do Código dos EUA, adulterando computadores, fraude e abuso.

Se eles não cessarem, pague o dinheiro e processe. Em meados dos anos 90, tive o primeiro caso na WDMO, onde o único provedor de Internet da área de Kansas City foi invadido por três adolescentes. Entrei em contato com as famílias (eles haviam enraizado um dos servidores e eram estúpidos o suficiente para armazenar seu aplicativo para ingressar nos grupos "Warez" com seus nomes e endereços reais em um subdiretório oculto) e pedi que parassem os adolescentes de fazer isso. Eles recusaram.

Em uma reclamação de 54 páginas, tive que explicar: ISPs, Internet, acesso excessivo etc. a um juiz recém-nomeado.

Eu era mais do que um defensor, uma conta minha havia sido acessada (graças a Deus, não uma conta de cliente - The Rust List) e fui marcado. Encarreguei os pais (único caminho a percorrer onde os acusados ​​eram menores em uma ação civil) e afirmei que os pais haviam colocado uma instrumentalidade perigosa nas mãos de menores sem supervisão adequada e que os menores haviam se envolvido na transferência de software roubado, e pornografia infantil (Sim, meninos de 16 anos tirando fotos dos seus GFs de 16 anos é "pornografia infantil"). Eu cumpri as políticas do proprietário e tinha um remédio que os tribunais da época nem considerariam: uma proibição vitalícia do uso de computadores para os adolescentes.

Foi resolvido dentro de uma semana após a transferência da descoberta.

Você já tentou de tudo: martele essa merda com uma carteira. Cuidado para escolher um advogado que saiba o que é isso e não um associado a uma "grande empresa" onde você será cobrado até a morte.

Considere como uma ordem judicial que impede o idiota de acessar seu site pode funcionar: Ele foi banido - você encontra um endereço IP que viola a ordem do tribunal - envie-o ao seu advogado e apresenta uma moção junto ao Tribunal mostrando violação da Ordem e o Tribunal responderá com uma Ordem de Causa por que o réu não deve ser mantido em desacordo com o tribunal.

Um ataque de outros sites / endereços IP começa a aparecer - informe seu advogado - e a resposta pode incluir o espelhamento dos computadores dos acusados, uma liminar impedindo o acusado de todo o acesso à Internet e, ao descobrir que o acusado violou a ordem por procuração , o Tribunal irá impor sanções.

Por fim, o idiota pode ter se limitado a ficar para sempre bloqueado da Internet. Se você está realmente chateado depois de tudo isso e deseja ter certeza de que o réu está fora da Internet, contrate um PI para segui-lo por uma semana ou dez dias (não é barato) e se ele está acessando a Internet de um Starbucks - ou McD's você os tem: de volta ao juiz.

A Ordem final está além da crença e só acontecerá com evidências esmagadoras de que o réu violou rotineiramente as ordens do tribunal: sem telefones inteligentes, sem VOIP, sem TV a cabo ou via satélite (a Internet está disponível e ele demonstrou total desrespeito à lei). lei, então nada que eles possam invadir para obter acesso é permitido), sem Internet (seria bom se fosse uma proibição vitalícia - provavelmente não), sem Internet das coisas e, por fim, sem dispositivos de computação.

Se o réu estava ganhando a vida no setor de tecnologia - eles têm valas para cavar e hambúrgueres para virar.

É assim que se acaba com a opção nuclear.

George R. O'Connor
fonte
@ Pierre.Vriens Esta é uma informação interessante em qualquer caso, e enquanto estou em Tóquio, minha empresa está nos EUA, assim como o usuário que abusou.
Patrick Kenny
OK, desculpe pelo meu comentário, em seguida, (Eu apaguei o meu comentário antes agora já então) ... Eu estou olhando para ele com EUR-óculos embora ...
Pierre.Vriens
2

Eu gosto do modelo de miséria, mas eu acrescentaria para enviá-lo aleatoriamente para uma página com mensagens irritantes muito altas e outras vezes para sites pornográficos realmente ruins. Qualquer coisa que possa colocá-lo em problemas ou envergonhado se ele estiver em público.

jerry
fonte
1
Tempos desesperados exigem medidas desesperadas, isso seria tão irritante. Eu poderia adicionar redirecioná-lo para Rick Roll, lol.
No Sssweat,
1
Isso daria a impressão de que ele está bloqueado
Ángel
2

Eu escrevi um módulo especificamente para esse tipo de situação. Chama-se Spaces Enforced e pode ser encontrado aqui , e funciona bloqueando qualquer pessoa registradora cujo nome não contenha pelo menos 1 espaço. Ele pode ser configurado ainda mais e você pode selecionar qual caractere precisa aparecer quantas vezes. Também possui uma taxa de sucessão próxima de 100%

Kartagis
fonte