¿Debo mantener las direcciones de correo electrónico como texto sin formato en la base de datos?

14

Está claro para todos ( espero ) que almacenar contraseñas sin al menos saltearlas o mezclarlas es una idea terrible .

¿Qué pasa con los correos electrónicos? Supongamos que conserva la dirección de correo electrónico de la suscripción; si la cifra correctamente, es posible que no se pueda enviar correos electrónicos a los usuarios. Por otro lado, si no lo encripta y la base de datos es robada, todos sus usuarios se arriesgan a un posible spam.

Esta pregunta no trata sobre cuestiones específicas de la ley (aunque pueden darse, siguen dependiendo del país) o sobre el cifrado de la base de datos.

Pierre Arlaud
fuente
Piense que uno debe mantener toda la PII (información de identificación personal) de manera segura. Es decir, datos encriptados que la aplicación debería necesitar (es decir, enviar un correo electrónico de verificación) y datos de hash / salt utilizados para la autenticación (es decir, contraseña). Además, por supuesto, asegurar la base de datos es obligatorio en este caso.
Ilan Huberman
Por ejemplo, puede configurar una aplicación separada que almacene solo correo electrónico + contraseñas (+ otros datos privados). Puede usar eso para enviar correos electrónicos llamándolo, por ejemplo, con una api de descanso interna: localEmailServer / sendInvite / 123 donde 123 = ID de usuario. Puede hacer lo mismo para iniciar sesión, publicar en localEmailServer / login que puede devolver verdadero o falso. De esa manera, su aplicación puede ser hackeada, pero aún así no tendrán las direcciones de correo electrónico. Si limita la cantidad de solicitudes a este servicio, está más protegido porque no es vulnerable a cosas como las inyecciones SQL en esta parte.
Luc Franken

Respuestas:

9

El almacenamiento de un hash salado de las direcciones de correo electrónico podría ser una opción si mantiene esos registros solo para la confirmación / autenticación de la cuenta.

En otros casos, me parece que cifrar los correos electrónicos dificultaría el trabajo de mantener la base de datos y ganaría poco a cambio.

Probablemente, asegurar el acceso a la base de datos en sí es una mejor opción: generalmente hay mucha otra información en la base de datos que no le gustaría reunir.


Una pregunta similar sobre Stackoverflow: ¿Vale la pena cifrar las direcciones de correo electrónico en la base de datos?

manlio
fuente
¡No vi esa pregunta! Para el registro, es una vieja pregunta, pero creo que ahora debería pertenecer a los programadores.
Pierre Arlaud
3
@PierreArlaud: En realidad, todo sería mejor en Seguridad de la Información, ya que realmente no tiene nada que ver con la programación.
Blrfl
Hay un retorno de cifrado de correos electrónicos de hecho. Si no almacena las claves en la misma base de datos comprometida, privará al malo de usar los correos electrónicos. Recuerde que un correo electrónico se usa mucho para la activación de cuentas y el cambio de credenciales.
NoChance
2

Creo que ya lo dijiste todo.

Lo único que se me ocurre es no usar un filtro hash unidireccional como SHA1 para almacenar las direcciones de correo electrónico. Use algún cifrado de clave pública (reversible) en su aplicación y asegúrese de que su clave privada no esté cerca de la base de datos, para que no puedan ser "robados" juntos.

De esa manera, aún puede descifrar las direcciones de correo electrónico para enviar correos electrónicos,

Mawg dice que reinstalar a Mónica
fuente
66
¿Y? ¿Y? El suspenso me está matando :)
Pierre Arlaud
¿Y qué? ¿Qué es suspenso? Cifrar (descifrable) en su aplicación antes de almacenarlo en la base de datos significa que no se preocupe si la base de datos es robada, pirateada, etc. Pero, cuando desea enviar correos electrónicos, puede descifrar los destinatarios de correo electrónico de la base de datos. ? ¿Me estoy perdiendo de algo?
Mawg dice reinstalar a Mónica el
2
Solo un comentario sobre el último personaje de su respuesta: D
Pierre Arlaud
Estoy tratando de encontrar lo que tu respuesta dice que no hizo manlio. Básicamente, la idea es tener un hash reversible del correo electrónico, como un hash salado. ¿O tal vez tenías algo completamente diferente en mente?
Pierre Arlaud
Lo siento, supongo que nos presentamos casi al mismo tiempo.
Mawg dice que reinstale a Mónica el