Frage

Ich benutze es bereits gesalzenes Hashing Passwörter in meiner Datenbank zu speichern, was bedeutet, dass ich dagegen immun sein sollte Regenbogentisch Anschläge.

Ich hatte jedoch einen Gedanken:Was passiert, wenn jemand an meine Datenbank gelangt?Es enthält die E-Mail-Adressen der Benutzer.Ich kann diese nicht wirklich hashen, da ich sie zum Versenden von Benachrichtigungs-E-Mails usw. verwenden werde.

Soll ich sie verschlüsseln?

War es hilfreich?

Lösung

Bruce Schneier hat eine gute Antwort auf diese Art von Problem.

  

Die Kryptographie ist nicht die Lösung Ihrer Sicherheitsprobleme. Es könnte einen Teil der Lösung, oder es könnte sein, einen Teil des Problems sein. In vielen Situationen beginnt Kryptographie, indem sie das Problem noch schlimmer, und es ist nicht klar, dass Kryptographie ist eine Verbesserung.

Im Wesentlichen Ihre E-Mails in der Datenbank ‚für alle Fälle‘ Verschlüsselung macht nicht wirklich die Datenbank sicherer. Wo sind die Schlüssel für die Datenbank gespeichert? Welche Dateiberechtigungen für diesen Schlüssel verwendet? Ist die Datenbank accesable öffentlich? Warum? Welche Art von Kontobeschränkungen bestehen für diese Konten? Wo ist die Maschine gespeichert hat, die den physischen Zugang zu dieser Box? Was ist Remote-Login / ssh-Zugang etc. etc. etc.

Also ich denke, man kann die E-Mails verschlüsseln, wenn Sie wollen, aber wenn das das Ausmaß der Sicherheit des Systems ist dann ist es wirklich nicht viel zu tun, und würde tatsächlich an die Arbeit, die Datenbank der Aufrechterhaltung härter.

Natürlich ist dies für Ihr System Teil einer umfassenden Sicherheitspolitik sein könnte - wenn ja dann groß

Ich sage nicht, dass es eine schlechte Idee ist - Aber warum haben eine Sperre auf die Tür von Deadlocks'R'us die $ 5000 kosten, wenn sie durch das Sperrholz um die Tür schneiden kann? Oder kommen Sie durch das Fenster, das Sie offen gelassen? Oder noch schlimmer finden sie den Schlüssel, die unter der Fußmatte verlassen wurde. Sicherheit eines Systems ist nur so gut wie das schwächste Glied. Wenn sie Root-Zugriff haben, dann können sie ziemlich viel tun, was sie wollen.

Steve Morgan macht einen guten Punkt, auch wenn sie die E-Mail-Adressen, die nicht verstehen können, sie noch eine Menge Schaden anrichten können (was gemildert werden könnte, wenn sie nur SELECT-Zugriff haben)

Es ist auch wichtig zu wissen, was Ihre Gründe sind die E-Mail-Adresse an alle für die Speicherung. Ich habe vielleicht ein bisschen über Bord mit diese Antwort , aber mein Punkt ist, tun Sie wirklich eine E-Mail-Adresse für ein Konto speichern müssen? Die sichersten Daten sind Daten, die nicht vorhanden sind.

Andere Tipps

Mir ist klar, dass dies ein totes Thema ist, aber ich stimme Arjans Logik dahinter zu.Es gibt ein paar Dinge, die ich hervorheben möchte:

Jemand kann Daten aus Ihrer Datenbank abrufen, ohne Ihren Quellcode abzurufen (d. h.SQL-Injection, Datenbanken von Drittanbietern).Vor diesem Hintergrund ist es sinnvoll, die Verwendung einer Verschlüsselung mit einem Schlüssel in Betracht zu ziehen.Allerdings ist dies nur ein zusätzliches Maß an Sicherheit, nicht die Sicherheit ... dies ist für jemanden, der die E-Mail privater als den Klartext halten möchte. Es kann vorkommen, dass bei einem Update etwas übersehen wird oder ein Angreifer es schafft, die E-Mails abzurufen.

Meiner Meinung nach: Wenn Sie vorhaben, eine E-Mail zu verschlüsseln, speichern Sie auch einen gesalzenen Hash davon.Anschließend können Sie den Hash zur Validierung verwenden und sich den Aufwand ersparen, der durch die ständige Verwendung von Verschlüsselung zum Auffinden einer riesigen Datenfolge entsteht.Dann steht Ihnen bei Bedarf eine separate private Funktion zum Abrufen und Entschlüsseln Ihrer E-Mails zur Verfügung.

In Übereinstimmung mit den meisten Sicherheitsanforderungen, müssen Sie den Grad der Bedrohung verstehen.

Welche Schäden kann getan werden, wenn die E-Mail-Adressen gefährdet sind?

Was ist die Chance, es passiert?

Der Schaden, wenn E-Mail-Adressen ersetzt könnte viel größer, als wenn sie ausgesetzt sind. Besonders, wenn Sie zum Beispiel mit dem E-Mail-Adresse Passwort-Resets zu einem sicheren System zu überprüfen.

Die Möglichkeit der Passwörter entweder ersetzt oder ausgesetzt werden stark reduziert, wenn man sie Hash, aber es hängt, was andere Steuerelemente, die Sie an der richtigen Stelle.

Ich würde sagen, dass es über die Anwendung der Datenbank abhängig ist.

Das größte Problem ist, wo speichern Sie den Verschlüsselungsschlüssel? Denn wenn der Hacker hat Überschuss zu etwas mehr als der DB, alle Ihre Bemühungen werden wahrscheinlich verschwendet. (Denken Sie daran, müssen Sie Ihre Anwendung, die Verschlüsselungsschlüssel zu entschlüsseln und zu verschlüsseln, so schließlich der Hacker den Verschlüsselungsschlüssel und verwendetes Verschlüsselungsschema finden).

Pro:

  • Ein Leck Ihrer DB nur wird die E-Mail-Adressen nicht aus.

Nachteile:

  • Verschlüsselung bedeutet Leistungsverlust.
  • Allot von Datenbankaktionen wird schwieriger, wenn nicht unmöglich sein.

Sie nicht versehentlich conflate Verschlüsselung mit Verschleierung. Wir verschleiern häufig E-Mails um Spam zu verhindern. Viele Websites haben „Webmaster _at_ mysite.com“ Crawlern zu verlangsamen aus der E-Mail-Adresse als potenzielles Spam-Ziel-Parsing. Das sollte in dem HTML-Templates erfolgen -. Es gibt keinen Wert zu tun dies in persistenten Datenbankspeichern

Wir verschlüsseln nichts, wenn wir es geheim halten während der Übertragung benötigen. Wann und wo werden, um Ihre Daten übertragen?

  1. Die SQL-Anweisungen werden vom Client zum Server übertragen wird; ist, dass auf dem gleichen Feld oder über eine sichere Verbindung?

  2. Wenn Ihr Server gefährdet ist, haben Sie eine unbeabsichtigte Übertragung. Wenn Sie darüber besorgt sind, dann sollten Sie vielleicht Ihren Server sein zu sichern. Sie haben externe Bedrohungen als auch interne Bedrohungen. Sind alle Benutzer (extern und intern) korrekt authentifiziert und autorisiert?

  3. Während der Backups, die Sie eine absichtliche Übertragung auf Backup-Medien haben; dies erfolgt eine sichere Backup-Strategie verwenden, die verschlüsselt, wie es geht?

Sowohl SQL Server und Oracle (und ich glaube, auch andere DBs) unterstützen die Verschlüsselung von Daten auf Datenbankebene. Wenn Sie etwas verschlüsseln wollen, warum den Zugriff auf die Daten nicht nur abstrakt zu tun, die auf dem Datenbankserver Seite verschlüsselt werden konnten und links der Benutzer wählen, ob die verschlüsselten Daten (in diesem Fall wird der SQL-Befehl unterschiedlich sein) oder nicht. Wenn der Benutzer dann auf Benutzer verschlüsselte Daten möchten, können sie den Datenbankserver konfigurieren und alle Wartungsarbeiten mit Schlüsselmanagement verbunden ist mit Standard-DBA-Tool gemacht, aus dem DB-Anbieter gemacht und nicht von Ihnen.

Eine Kopie meiner Antwort auf Was ist die beste und sicherste Weg, Benutzer E-Mail-Adressen in der Datenbank zu speichern? , nur um der Suche ...


Im Allgemeinen bin ich mit anderen sagen, es ist nicht die Mühe wert. Allerdings habe ich nicht einverstanden, dass jeder, der auf Ihre Datenbank zugreifen können, können wahrscheinlich auch Ihre Schlüssel bekommen. Das ist sicherlich nicht wahr für SQL-Injection und nicht für Sicherungskopien wahr sein, die über irgendwie verloren oder vergessen werden. Und ich fühle mich eine E-Mail-Adresse ein persönliches Detail ist, also würde ich über Spam, sondern über die persönlichen Konsequenzen nicht kümmern, wenn die Adressen aufgedeckt werden.

Natürlich, wenn Sie Angst vor SQL-Injection sind, dann sollten Sie sicher solche Injektion machen ist verboten. Und Sicherungskopien sollten sich verschlüsselt werden.

Doch für einige Online-Communities können die Mitglieder auf jeden Fall nicht, andere wollen wissen, dass sie Mitglied sind (wie im Zusammenhang mit psychischen Gesundheit, finanzielle Hilfe, medizinische und sexuelle Beratung, Unterhaltung für Erwachsene, Politik, ...). In diesen Fällen die Speicherung so wenig personenbezogene Daten wie möglich, und diejenigen, die Verschlüsselung, die (beachten Sie, dass Datenbank-Level-Verschlüsselung nicht daran hindert, die Details aus zeigt SQL Injection mit) erforderlich sind, vielleicht nicht so sein, eine schlechte Idee. Auch hier:. Eine E-Mail-Adresse als solches persönliches Detail behandeln

viele Websites Für die oben ist wahrscheinlich nicht der Fall ist, und Sie sollten auf das Verbot SELECT * FROM durch SQL-Injection konzentrieren und sicherstellen, dass die Besucher können irgendwie jemand anderes persönliches Profil oder um Informationen nicht zu erhalten, indem Sie die URL zu ändern.

Es lohnt sich Daten in Datenbanken zu verschlüsseln, ist es nicht so dass es ein bisschen schwieriger, aber viel schwieriger, wenn seine in der richtigen Art und Weise verschlüsselt, so Philosophie stoppen und die sensiblen Daten zu verschlüsseln;)

Sie haben wirklich Ihren schlimmsten Fall senario von jemandem wiegen diese E-Mail-Adressen zu erhalten, zu erhalten die Wahrscheinlichkeit, dass jemand sie und Ihre zusätzliche Aufwand / Zeit benötigt, um die Änderung impliement.

@Roo

Ich bin damit einverstanden etwas zu, was Sie sagen, aber ist es nicht wert, die Verschlüsselung von Daten nur, um es ein wenig schwieriger für jemanden, der es zu bekommen?

Mit Ihrer Argumentation, wäre es nutzlos Schlösser oder Alarme in Ihrem Hause zu haben, weil sie auch leicht kompromittiert werden können.

Meine Antwort:

Ich würde sagen, dass, wenn Sie sensible Daten, die Sie wollen nicht in die falschen Hände fallen, dann sollten Sie es tun, so hart wie Sie für einen Hacker kann es zu bekommen, auch wenn es nicht 100% Narr Beweis .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top