2010-09-16 15 views
5

he oído bastantes razones para almacenar contraseñas hash en una base de datos. Sin embargo, casi siempre hay opciones en las API de autenticación para almacenar contraseñas como texto sin formato o encriptadas.¿Por qué alguna vez querría almacenar una contraseña de texto plano o encriptado (no hash) en una base de datos?

¿Alguna vez hay una razón por la que desee almacenar una contraseña como texto sin formato o cifrada en una base de datos?

Nota Para que quede claro que sé que el almacenamiento de contraseñas no hash son casi siempre mal. (Por lo que yo sé de todos modos) Mi pregunta es ¿por qué la mayoría de las API de autenticación incluyen opciones para almacenar las contraseñas como cifrada o sin formato texto.

+0

La única razón por la que puedo pensar es en los requisitos excesivamente pobres del cliente. –

+3

No hay una buena razón para ello. Nunca. No hay nada peor que enviar un formulario de contraseña olvidada en un sitio web y recibir su contraseña por correo electrónico. Ugh. –

+0

Earlz: para aclarar, se pregunta por qué las cadenas de conexión permiten contraseñas de texto sin formato o autenticación IIS. ¿Por qué los programadores podrían hacerlo (si saben mejor)? – Kobi

Respuesta

6

La única razón real que se me ocurre es cuando la base de datos pertenece a un sistema que se dirige a la aplicación real. Como cuando tiene programas que inician sesión en algo para usted (clientes de correo electrónico, clientes de mensajería instantánea, etc.).Todos los que tienen que almacenar la contraseña de una manera recuperable para obtener acceso, porque la aplicación de destino no decidirá entre usuario real y usuario a través de una herramienta. Exactamente en este punto, OAuth y similares se hacen para guardar la contraseña del usuario.

1

Incluso si está seguro de la seguridad de su base de datos, las contraseñas de sus usuarios aún son accesibles para todos los administradores.

Es de vital importancia comprender que el cifrado de contraseñas no protegerá su sitio web, solo puede proteger sus contraseñas.

Si su sitio web no tiene suficiente protección, cifrado de la contraseña no hará más segura la aparición de grietas. Si su sistema se ha descifrado, un hacker puede infligirle un daño irreparable y también obtener acceso a información confidencial, incluida la base de datos de contraseñas. Pero si almacena esta información encriptada, los piratas informáticos prácticamente no pueden hacer uso de ella. Descifrar una contraseña encriptada requiere una gran cantidad de tiempo y poder de procesamiento, incluso en las computadoras de hoy en día.

+2

Ese tipo de respuesta responde al opuesto de la pregunta;) –

5

Tal vez usted es un hacker, y desea utilizar o vender? It'll be hilarious the first few times this happens.

+1

+1 solo para hacer referencia a XKCD –

+0

+1 para hacer referencia a un XKCD muy reciente – Earlz

6

Una razón que se me ocurre es permitir una opción de recuperación de contraseña. No hay forma de recuperar una contraseña que el sistema no conoce.

Por supuesto, la alternativa es que el sistema simplemente restablezca la contraseña a algo nuevo y le envíe la nueva contraseña.

+1

Restablecer la contraseña debe ser la opción más para guardar. –

+0

de acuerdo. Sin embargo, era solo una razón por la que podía pensar en no cifrar la contraseña. –

+1

A veces recuperar la contraseña anterior está bien en algunos sitios web –

0

Por supuesto, podría almacenar todas las contraseñas como texto sin formato en su almacenamiento (por ejemplo, la base de datos). Pero no es recomendado Si alguien logra piratear tu servidor y obtiene tus datos de la base de datos, también tiene todas las contraseñas. Incluso el solo almacenamiento de una contraseña hash con métodos comunes como md5 no es muy fácil de guardar en este caso. Porque hay tablas de arcoiris (busque google para esto), para buscar contraseñas.

por lo que recomiendo para almacenar contraseñas saladas. No sé por qué almacenarías tus contraseñas como texto sin formato. Yo no lo haría :)

0

Una de las razones podría ser la de auto-reutilizar la contraseña de otro, un servicio externo.

Si configuro mi cuenta de gmail para recuperar mi correo electrónico de otro proveedor de correo electrónico que no sea google, tengo que dar mi contraseña a google y google debe tener esta contraseña clara para recibir mis correos en mi cuenta de gmail.

Evidentemente, no es la misma contraseña que para el servicio principal, pero de todos modos es "de tipo contraseña".

+0

Buen punto, pero en este caso el proveedor está almacenando * a * contraseña, no su propia contraseña. – Kobi

+1

OAuth está diseñado para admitir este caso de uso y poco a poco está ganando popularidad. –

0

La única "buena" razón que puedo pensar es que el cliente le paga para desarrollar la aplicación o su gerente insiste en ello. No puedo pensar en ningún razones técnicas.

1

1) La mayoría de los protocolos de autenticación Challenge-Response requieren que el servidor conozca la contraseña de texto sin formato. Hay excepciones, pero son impopulares y difíciles de implementar.

2) Las contraseñas de almacenamiento permiten la recuperación de contraseña.

+0

este es el conocimiento exacto de los sistemas de prueba de contraseña no son más populares. – Jacco

1

me he encontrado con el siguiente argumento un par de veces:

Almacenamiento de contraseñas en texto plano le permite detectar cuando un usuario cambia su contraseña a algo parecido a una contraseña antigua, es decir, mediante el incremento de un número, la adición de un '1', o mediante algún otro método de actualización de baja entropía condicional.

Nadie debería tomar ese argumento como una buena razón para almacenar contraseñas de texto sin formato: está equivocado por varias razones.

Cuestiones relacionadas