Ver Mensaje Individual
  #1  
Antiguo 10-03-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Cómo implementar un límite de "intentos de acceso"

Hola a todos,

Me encontraba yo esta tarde aburrido, de manera que me he puesto a implementar cierta característica en Gesbit que llevaba tiempo queriendo hacer. La idea es limitar a un número máximo los intentos de acceder al sistema por parte de un usuario. Es decir, existe un formulario para autenticarse, y, el objetivo es que si el usuario intenta "logearse" más de cinco veces, por ejemplo, sin tener éxito, impedirle que continúe intentándolo, cuando menos, no mostrarle más el formulario en cuestión, sino un mensaje de error.

Lo primero que se me ha ocurrido ha sido utilizar una variable de sesión. Craso error. En efecto, funcionaría más o menos bien para un usuario "normal", es decir, alguien llega al formulario de acceso, intenta autenticarse, no lo consigue, y, a la quinta vez, el sistema le retorna un mensaje de error, y no le muestra más el formulario de autenticación hasta que no cierre su sesión de usuario (cierre y vuelva a abrir su navegador). O sea, que sí.

Pero, no. Parece que utililizar una variable de sesión no sirve para el caso de que un usuario intente enviar nuestro formulario de autenticación "desde un script", por ejemplo, escrito en PHP, utilizando la clase Snoopy, haciendo de navegador web. ¡Y precisamente este tipo de usuarios son a los que hay que intentar detener! Puesto que pueden, mediente un "script", hacer tantas peticiones de acceso como les de la gana... intentando así un ataque "por fuerza bruta" al sistema.

Ahora bien, como digo, para este tipo de "scripts", no parecen funcionar las variables de sesión, y es que siempre que el "script" se ejecuta se establece una variable de sesión nueva, de modo que nuestro "contador de intentos de acceso" siempre estaría "a cero". Entonces, mi pregunta es, ¿qué se puede usar aparte de una variable de sesión? ¿No queda más remedio que utilizar la base de datos para guardar allí el número de intentos? ¿Pero dónde se guardaría? ¿En una especie de tabla auxiliar? ¿Acaso no sería esto complicarlo demasiado? ¿Tú sabes de alguna otra solución?

Gracias a todos de antemano por vuestras posibles sugerencias.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita