¿Cuáles son los peligros (prácticos) de escribir su propio método de inicio de sesión?

2

Siempre me han dicho que escribir su propio método de inicio de sesión (por ejemplo, validar el usuario con el nombre de usuario y la contraseña) es una mala práctica y que para eso se deben reutilizar las bibliotecas existentes. Siempre lo he creído, pero estoy buscando amenazas prácticas en tal escenario (C #). El caso práctico que estoy estudiando es personalizar un método de inicio de sesión para incluir la validación de un Captcha. No he encontrado ninguna biblioteca existente para hacer eso dentro de la lógica de autenticación.

Una de las implicaciones de mi implementación personalizada es que el método de validación no devuelve un bool, sino otro tipo. ¿Puede esto suponer un peligro?

    
pregunta Michael 29.07.2014 - 08:55
fuente

3 respuestas

6

El peligro se expresa en ley de Schneier :

  

cualquier persona puede inventar un sistema de seguridad tan inteligente que no pueda imaginar una forma de romperlo.

La única forma en que alguien sabe probar si un sistema dado es seguro es tener muchas personas inteligentes que intenten romperlo durante un largo período de tiempo. No tendrás eso con un sistema que hayas hecho tú mismo.

    
respondido por el Graham Hill 29.07.2014 - 11:52
fuente
1
  

... pero estoy buscando amenazas prácticas en tal escenario (C #)

Hay una gran cantidad de formas en las que podría introducir una vulnerabilidad al lanzar su propio inicio de sesión. Algunos que vienen a la mente:

Enumeración del usuario : he visto personas que dan mensajes descriptivos cuando un el inicio de sesión falla ("el usuario no existe", "el usuario existe, pero la contraseña era incorrecta", etc.) en lugar de un mensaje genérico de "inicio de sesión fallido".

Política de bloqueo insuficiente : esto permitiría que un usuario malintencionado bruteforce nombre de usuario / contraseñas. Esto es muy peligroso si tiene la vulnerabilidad de enumeración del usuario mencionada anteriormente.

No realizar una acción de inicio de sesión a través de HTTPS: podría permitir que un hombre en el medio ataque cuando alguien inicia sesión.

Como mencioné, hay una serie de otras vulnerabilidades potenciales que debería tener en cuenta (SQLi, XSS, la lista continúa), pero las tres anteriores son las más comunes que he visto en los "inicios de sesión". .

    
respondido por el Abe Miessler 30.07.2014 - 01:08
fuente
0

Enseñé a nunca "rodar el tuyo" en situaciones donde ya hay algo escrito para hacer algo similar. Si fuera tú, trataría de encontrar algo que se haya comprobado que funcione y tratar de construir alrededor o encima de eso.

    
respondido por el Nighthawk 29.07.2014 - 13:53
fuente

Lea otras preguntas en las etiquetas