2016-08-04 20 views
1

Mein Problem ist nicht, dass ich keine E-Mails in einer Datenbank speichern kann. Jeder kann das tun. Hier ist meine Frage:Speichern von privaten E-Mail-Adressen in meiner Datenbank

Wenn ein Benutzer ein Konto auf meiner Website erstellt, erhalten sie eine ID, Benutzer, Passwort und E-Mail-Adresse Daten. Für das Passwort hash ich es so, dass, wenn jemand meine Website hackt, sie nicht die echten Passwörter sehen. Ist jedoch nicht ein Haufen E-Mail-Adressen gespeichert, ungeschützt (wie die Benutzer) ein Sicherheitsrisiko?

Ich habe noch nie eine Login-System-Website erstellt und möchte wissen, ob alle anderen die E-Mail-Adresse ungeschützt in der Datenbank belassen. (Mit anderen Worten, ist es üblich, eine E-Mail-Adresse nur so in der Datenbank zu speichern, wie sie ist?).

Danke.

+0

Es ist üblich, ja. Eine E-Mail-Adresse ist nicht wirklich ein Sicherheitsrisiko (es sei denn, Benutzer verwenden das auch als ihr Passwort, aber das ist eine schlechte Idee ihrerseits). Sie können es verschlüsseln, wenn Sie möchten, und das wäre ein wenig mehr Privatsphäre für Ihre Benutzer. Aber es müsste entschlüsselbar sein, damit Sie es natürlich verwenden können. – David

+0

Offensichtlich sollten sie verschlüsselt werden. –

+0

@David Aktuelle * E-Mails *; keine E-Mail-Adressen. –

Antwort

2

Benutzernamen und E-Mail-Adresse haben nicht die gleiche Sensibilität als Passwörter.

Passwörter sollten gesichert werden (hoffentlich mit bcrypt), denn wenn Alice das gleiche Passwort für Bobs Dinge verwendet wie für Gmail, dann kann kein Angreifer Zugriff auf die Datenbank von Bob's Things erhalten E-Mail-Konto (noch die der anderen 10.000 Benutzer, die regelmäßig Bobs Sachen kaufen und Passwörter wiederverwenden).

Die E-Mail-Adresse kann normalerweise nicht wie Passwörter hashed werden. Wenn Ihr System dem Benutzer eine E-Mail senden muss, kann es dies nicht tun, wenn die E-Mail in Hash-Form gespeichert ist.

Außerdem gibt es weniger Dinge, die ein Angreifer mit der E-Mail-Adresse tun kann. Ja, sie könnten Phishing-E-Mails an Ihre Benutzer senden oder sie könnten versuchen, ein Passwort zu erraten, um Zugriff auf Konten zu erhalten. Die Komplexität der Sicherung der E-Mail-Adresse in Bezug auf den serverseitigen Speicher ist jedoch oft nicht der Mühe wert.

Sie sollten besser sicherstellen, dass die Schnittstelle zu dieser Datenbank (d. H. Ihre Anwendung und unterstützende Infrastruktur) ordnungsgemäß gesichert ist, anstatt zu versuchen, die E-Mail-Adressen in der Datenbank zu verschlüsseln. Selbst wenn sie verschlüsselt waren, wird die Schlüsselverwaltung dann zum Problem. Fazit: Sichern Sie Ihre Anwendung gegen user enumeration, wenn Sie verhindern möchten, dass die E-Mail-Adressen von Personen leicht entdeckt werden.

0

Allgemein:

1 - nie Benutzer-Kreditkartennummer überall in Ihrer Datenbank speichern, jedoch können Sie einen Teil davon sparen, wenn Sie wirklich wollen.

2 - immer Salz und passowrd des Hash-Benutzer

3 - keine Notwendigkeit eines Benutzers E-Mail zu verschlüsseln, wenn Sie wirklich Sorge, es verschlüsseln, hash es nicht

+0

Selbst wenn das Benutzer-Passwort für das Salzen und Hashing nicht ausreicht, muss der Hash wiederholt werden, so dass viel Zeit benötigt wird, um die Passwörter brutal zu erzwingen. Weitere Informationen finden Sie in meinem Kommentar zu dieser Frage. Weitere Informationen finden Sie unter Siehe [Wie sichere Kennwörter sicher verschlüsselt werden?] (Http://security.stackexchange.com/questions/211/how-to-securely-hash-passwords/31846# 31846) auf Sicherheit Stackexchange und Siehe OWASP (Open Web Application Security Projekt) [Passwort Speicher Spickzettel] (https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet#Leverage_an_adaptive_one-way_function). – zaph