Pregunta

Estoy diseñando un sencillo formulario de registro en ASP.net MVC 1.0 Quiero permitir que el nombre de usuario para ser validada mientras el usuario está escribiendo (según las preguntas relacionadas vinculados a continuación)

Esto es suficiente nada fácil. ¿Pero cuáles son las implicaciones de seguridad de tal característica?

¿Cómo puedo evitar abusos por parte de las personas que raspan esto para determinar la lista de nombres de usuario válidos?

algunas preguntas relacionadas: 1 , 2

¿Fue útil?

Solución

Para prevenir contra las actividades "maliciosos" en algunas de mis cosas ajax interna, añado dos variables conseguir una, es la fecha (por lo general en la época) entonces tomo esa fecha añadir una sal y SHA1, y también Post que, si la fecha (cuando refrito) no coincide con el hash entonces me cae la solicitud de otro modo cumplirla.

Por supuesto que si el cifrado antes de que la página se representa y pasar el hash y fecha a la JS. De lo contrario, no tendría sentido.

El problema de usar límites IP / basan en cookies es que ambos pueden ser anuladas. Utilizando un método simbólico con una buena, criptográficamente fuerte, sal (decir algo así como una de "Las contraseñas perfecto" de Steve Gibson https://www.grc.com/passwords.htm ) se necesitaría una enorme cantidad de tiempo (en la escala de décadas) antes de que el método se podría predecir de forma fiable y no para asegura una cierta seguridad cantidad.

Otros consejos

que podría limitar el número de solicitudes de quizás 2 por cada 10 segundos más o menos (un usuario real puede poner en un nombre que se toma y modificarlo un poco y vuelve a intentarlo). algo así como la forma en lo que no deja de comentar más de una vez cada 30 segundos.

Si usted está realmente preocupado por eso, se puede tomar un método arriba y contar cuántas veces lo intentaron en un determinado período de tiempo, y si se pasa por encima de un umbral, una patada a otra página.

validado como en: "Este nombre de usuario ya está en uso"? Si limita el número de solicitudes por segundo que debe ayudar

Una forma común de resolver esto es simplemente añadiendo un retraso en la solicitud. Si la solicitud se envía al servidor, espere 1 (o más) segundos en responder, entonces responderá con el resultado (si el nombre es válido o no).

La adición de una barrera de tiempo en realidad no afecta a los usuarios no tratando de raspar, y que han pasado unas 60-solicitudes por límite de minutos de forma gratuita.

Bulding en la respuesta proporcionada por UnkwnTech, que es un consejo bastante sólido.

Usted podría ir un paso más allá y hacer que el cliente realice algunas de cálculo para crear el hash de retorno -. Esto podría ser sólo un poco de aritmética simple como subtrating algunos números, añadiendo los datos y multiplicando por 2

La aritmética añadido Qué significa un nombre de usuario fuera de la caja raspando guión es poco probable que funcione y obliga al cliente a usar por mayor de la CPU.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top