Pergunta

Eu estou projetando um simples formulário de registro em ASP.net MVC 1.0 Quero permitir que o nome de usuário a ser validado enquanto o usuário está digitando (de acordo com as questões relacionadas ligados ao abaixo)

Isso tudo é bastante fácil. Mas quais são as implicações de tal recurso de segurança?

Como faço para evitar o abuso de pessoas raspagem isso para determinar a lista de nomes de usuários válidos?

Alguns perguntas relacionadas: 1 , 2

Foi útil?

Solução

Para prevenir contra atividades "maliciosos" em algumas das minhas coisas ajax interna, acrescento duas variáveis ??obter um é a data (geralmente na época), então eu tomar essa data adicionar um sal e SHA1-lo, e também postar que, se a data (quando requentada) não coincide com o hash, então eu cair o pedido de outra forma cumpri-la.

Claro que tenho a criptografia antes que a página é processado e passar o hash e data para o JS. Caso contrário, não teria sentido.

O problema com o uso de limites IP / cookies com base é que tanto pode ser ignorada. Usando um método de token com um bom, criptograficamente forte, sal (digamos algo como um de Steve Gibson de "Perfeito Senhas" https://www.grc.com/passwords.htm ) que seria necessário uma quantidade enorme de tempo (na escala de décadas) antes do método confiável poderia ser previsto e lá para garante uma certa quantidade de segurança.

Outras dicas

Você pode limitar o número de pedidos de talvez 2 por 10 segundos ou menos (um usuário real pode colocar em um nome que é tomada e modificá-lo um pouco e tente novamente). tipo de como como SO não permite comentar mais de uma vez a cada 30 segundos.

Se você está realmente preocupado com isso, você poderia tomar um método acima e contar quantas vezes eles tentaram em um determinado período de tempo, e se ele vai acima de um limite, chutá-los para outra página.

Validado como em: "Este nome de usuário já está tomada"? Se você limitar o número de solicitações por segundo deve ajudar

Uma maneira comum de resolver isso é simplesmente adicionando um atraso na solicitação. Se o pedido é enviado para o servidor, espere 1 (ou mais) segundos para responder, então responder com o resultado (se o nome é válido ou não).

Adicionando uma barreira do tempo realmente não usuários efeito não tentar raspar, e de ter obtido a 60 pedidos por limite de minutos grátis.

Bulding na resposta fornecida pelo Unkwntech, que é um conselho bastante sólido.

Você pode ir um passo adiante e fazer o cliente realizar alguma de cálculo para criar o hash de retorno -. Isso poderia ser apenas alguns arithmatic simples como subtrating alguns números, adicionando os dados e multiplicando por 2

O arithmatic adicionado não significa um nome de usuário out-of-box raspagem script é improvável que o trabalho e força o cliente a usar-se uma maior CPU.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top