¿Cuál es la forma más segura de almacenar contraseñas al crear un sitio web?

Si quiere decir cómo almacenar las contraseñas en la base de datos de un sitio web, supongo que almacenar el hash de la contraseña real del usuario en la base de datos sería la solución ideal, que también es el enfoque más destacado utilizado por muchos. Pero solo el hash no resolvería el problema. Por lo tanto, usar una sal junto con ella aumentaría la entropía general (aleatorización) del hash que generará la base de datos.
Use una sal que sea lo suficientemente larga y use diferentes para cada usuario para evitar colisiones.
ADVERTENCIA: nunca intente implementar sus propios métodos criptográficos. Utilice bibliotecas predefinidas, bien desarrolladas y mantenidas. Java tiene uno, casi todos los lenguajes de programación destacados tendrán uno.
Por ejemplo, / dev / random, SecureRandom (Java Platform SE 6)


No estoy seguro acerca de este concepto, corrígeme si estoy equivocado. Pero, supongo que cuando un usuario se registra inicialmente en un sistema. Su contraseña tiene que viajar a través de una línea insegura a su base de datos que luego calcula el hash y almacena el valor de hash y el valor de sal en el registro de base de datos relacionado del usuario.
Por lo tanto, el uso de una conexión HTTPS debería asegurar su canal de comunicación entre usted y su usuario. Simplemente obtenga un certificado de una Autoridad de Certificación (CA) de confianza. La mayoría de los sitios web de alojamiento como GoDaddy, etc. ofrecen esto como un servicio adicional donde ellos mismos emiten el certificado para su sitio web (Certificados SSL | Asegure sus datos y transacciones – GoDaddy CA)

Si no desea confiar en ellos, obtenga su propio certificado, ya sea en persona (validación extendida) u obtenga su certificado validado de dominio de una autoridad emisora ​​como, por ejemplo, Certificado SSL con el logotipo de Free Trust.

Un Certificado para la conexión HTTPS es muy importante y es muy necesario si se trata de información confidencial del usuario. Y dado que le preocupa la seguridad de sus contraseñas. Yo diría que una conexión HTTPS sería muy útil.

Desafortunadamente, todas las respuestas hasta ahora están lejos (lejos) del estado del arte. Aquí hay algunos consejos para buenas discusiones sobre las formas correctas e incorrectas de hacer esto:

http://www.codeproject.com/Articles/704865/Salted-Password-Hashing-Doing-it-Right

Hoja de trucos de almacenamiento de contraseña

Acerca del hash de contraseña segura

Notarás que todos están de acuerdo entre sí. Entonces haz eso.

Otro comentario re. La respuesta de Daniel Miller: usar el inicio de sesión social solo está bien si está dispuesto a confiar su seguridad en Facebook o en cualquier proveedor de identidad que seleccione. Para una amplia gama de escenarios, eso no será aceptable y posiblemente ni siquiera cumpla con las leyes y regulaciones aplicables.

Me gusta LastPass. Su base de datos no es local de manera predeterminada, por lo que no existen amenazas locales a menos que haya fallas en la protección de su máquina local que permitan un fácil acceso. Le solicita al iniciar sesión o crear una cuenta para guardar la contraseña, y hace sugerencias para contraseñas individuales muy seguras. Protege la base de datos con cifrado de extremo a extremo, permite el acceso basado en el teléfono, sugiere (pero no exige) que no guarde la contraseña maestra y la ingrese en cada momento o periódicamente. Es bastante bueno.

La forma menos segura, por el contrario, es escribir una contraseña en una hoja de papel al lado de su escritorio. No hagas eso.

Nada es seguro a través de internet. Necesita seguir lo siguiente para una mejor seguridad

1) Cambio periódico de contraseña con naturaleza compleja que solo usted podrá adivinar.

2) No usar la opción de guardar contraseña en los navegadores, particularmente los cibercafés o las zonas de acceso público.

3) No compartir contraseña con nadie.

4) Intente no mantener la misma contraseña para todos los sitios web.

5) No registrarse en sitios web falsos que pueden ganar dinero al compartir su información.

6) Si es posible, regístrese para la verificación en dos pasos y las preguntas de seguridad para un inicio de sesión seguro.

🙂

La forma más segura es no almacenar las contraseñas en absoluto. Use un mecanismo de inicio de sesión de terceros como Facebook Connect u OpenID para permitir que sus usuarios se conecten con credenciales que ya poseen. Sus usuarios se lo agradecerán porque no tienen que recordar otra contraseña.

Supongo que quiere decir que desea crear una base de datos de usuarios que pueden iniciar sesión en el sitio web.
Sospecho que la forma más segura sería autenticarse en una máquina diferente, con firewall de Internet. El sitio web envía un nombre de usuario y un hash de la contraseña al servidor de autenticación a través de un enlace privado, y eso devuelve un token válido / inválido. Si el servidor web se ve comprometido, no hay una lista de hashes de contraseñas que puedan ser robados, y no hay acceso de shell desde el servidor web que permita que un hacker inicie sesión en el servidor de autenticación. Algo así como Kerberos.

Agregando a la respuesta de Daniel Miller, si en el peor de los casos desea almacenar contraseñas, no solo la mezcle y la guarde, la ponga en sal y luego la mezcle.
y no me creas, y también mira este video:

Mantenga el valor hash de la contraseña (puede usar sha256 por ejemplo) y siempre compare al iniciar sesión.

Hay mucho más en seguridad cuando se trata de contraseña, como el número de intentos y tal.