¿Cómo aseguro mi página de inicio de sesión?

8

La página de inicio de sesión es el punto de inicio de cualquier sitio web y lo más importante para autenticar al usuario.

Cuando comienzo a crear cualquier aplicación web, me tomo mucho tiempo para pensar en cómo diseñar una página de inicio de sesión con una interfaz flexible y muy segura.

¿Hay algún consejo común, consejos o una lista de "debe hacer" para tener en cuenta cuando comience a crear la página de inicio de sesión? Quiero un consejo general, porque mi DBMS puede ser Informix o MySQL o SQL Server.

    
pregunta Anyname Donotcare 25.07.2011 - 23:36
fuente

7 respuestas

10

Aquí hay algunos más:

  • siempre que pueda, evite reinventar la rueda; si puede, reutilice y mejore su sistema de proyecto a proyecto, siempre con la vista de sus compañeros.

  • mantenga la contraseña oculta: no muestre texto en la página, transmita a través de HTTPS, no inicie sesión en claro en el back-end, almacene de forma segura en la base de datos. Básicamente, dondequiera que vaya la contraseña, se debe mantener la privacidad

  • hacer errores de registro; No mostrar demasiada información a los usuarios. Especialmente la "contraseña incorrecta" frente a "nombre de usuario incorrecto": no le diga al atacante que ha encontrado un nombre de usuario válido, no le diga "credenciales no válidas" o "nombre de usuario / contraseña incorrectos" sin detalles específicos. Pero, en el back-end, registre los problemas: ¿es esto una repetición de un nombre de usuario? ¿Cuáles son las características del fallo actual? En un sistema de gama alta, tendrías algo observando y alertando a los administradores si el comportamiento mostraba cualidades similares a las de un ataque.

  • Muestre claramente lo que el usuario está iniciando sesión en la página y proporcione un enlace o en la página de visualización de los términos de uso. Haga que esto se verifique con el abogado / cliente.

  • considere un sistema de bloqueo de contraseña y lo que se ajuste a los usuarios. Para una reutilización óptima, tenga los ajustes de configuración para # inicios de sesión incorrectos antes del bloqueo y # de minutos de bloqueo antes del restablecimiento (con una configuración para "solo reinicio manual")

  • considere cuidadosamente cualquier función para restablecer la contraseña, estas son difíciles de crear de forma segura.

  • tenga en cuenta a sus usuarios y cualquier cosa que puedan necesitar para autenticar su servidor; muchos de ellos no son expertos en SSL / certificados, así que, ¿qué puede hacer para minimizar que un usuario dé su contraseña para su sitio a un hacker?

respondido por el bethlakshmi 26.07.2011 - 16:22
fuente
13

Versión moderna:

  • Use HTTPS para todo su sitio, incluidas las páginas de marketing. Agregue el encabezado HSTS .

  • Si su público objetivo es lo suficientemente experto en computadoras, entonces evite el nombre de usuario tradicional & contraseña de inicio de sesión completamente. Descargue eso en un buen sistema de inicio de sesión federado, como el OpenID o Facebook Connect o inicio de sesión de Google .

  • Para la funcionalidad en su sitio que tiene mayores necesidades de seguridad (lo importante) use tokens CSRF .

respondido por el Jesper Mortensen 26.07.2011 - 00:53
fuente
4
  • Utilizar SSL
  • Hash y sal sus contraseñas, preferiblemente utilizando una biblioteca en lugar de rodar las suyas.
  • Pase los datos al servidor SQL mediante el enlace en lugar de intentar escapar de las cadenas.
  • No imprima nada de lo que se ingresa, evite XSS por completo.

El phishing es otra cuestión completamente.

    
respondido por el Jeff Ferland 26.07.2011 - 00:14
fuente
4

Omita la creación de su propia página de inicio de sesión ... Si tiene la opción , use la autenticación basada en reclamaciones y la federación de identidades: enlace (ese enlace es particular de .NET, pero tiene una buena introducción al CBA).

    
respondido por el Steve 26.07.2011 - 00:50
fuente
2

Esta página contiene mucha información sobre cómo usar TLS de forma segura para su sitio web. Si bien existen otras inquietudes para su sistema de autenticación (como el almacenamiento de contraseñas, la administración de sesiones, etc.), esto todavía proporcionará mucha información útil.

enlace

    
respondido por el Michael Coates 26.07.2011 - 12:31
fuente
1

para ampliar el cuarto punto de Jeff -

  • Valide todas las entradas y codifique todas las salidas; esto evitará la mayoría de los ataques comunes que se encuentran actualmente en Internet.

también,

  • Parchea tu O / S y tus aplicaciones. Cuando salgan los parches de seguridad para su base de datos, ¡parchelos!
respondido por el Rory Alsop 26.07.2011 - 00:38
fuente
0

Grandes puntos por otros. Solo quería agregar teniendo en cuenta la inyección de SQL y el uso de consultas parametrizadas / procedimientos almacenados para evitarlo.

enlace

    
respondido por el Ashish Gupta 17.10.2015 - 03:36
fuente

Lea otras preguntas en las etiquetas