1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Daten in SQL-DB sicher speichern, aber wie?

Dieses Thema im Forum "Webspace und Webhosting" wurde erstellt von Prenzlberger, 2. Oktober 2018.

  1. Prenzlberger

    Prenzlberger Member Aktivist

    Hi zusammen,

    ich hoffe, hier sind auch ein paar Web-Programmierer ^^
    Ich programmiere selber gern und oft in PHP und nutze natürlich auch eine SQL-Datenbank im Hintergrund.
    Aber immer öfter stelle ich mir die Frage, die man sensible Daten sicher in der DB speichern kann.
    Klar, PWs kann ich mit md5 o.ä. verschlüsseln und dann nur abgleichen. Aber vieles was man später ja nochmal abfragen und ändern können will finde ich derzeit noch schwierig verschlüsselt in der DB abzulegen.
    Wie macht Ihr das so?
     
  2. Zam Pano

    Zam Pano Well-Known Member Aktivist

    es ist zwar etwas fummelig (rechtevergabe, programmieren), aber mit Referenzen in der DB und Datendateien im Filesystem bleiben Dir Möglichkeiten der Änderung offen.
    Es darf halt kein Unbefugter im Filesystem rumpfuschen und Referenzen nur mit der Datendatei gelöscht werden. Wiederum rechtebedingt
     
  3. Prenzlberger

    Prenzlberger Member Aktivist

    meinst Du mit Rechtevergabe jetzt direkt die SQL-DB? Oder nur wer per PHP-Script Änderungen machen darf?
    Ich finde es halt trotzdem "ggf unsicher", wenn Infos unverschlüsselt in der DB liegen. So könnte jemand, der auf welchem Weg auch immer, an die DB kommt, alle Infos hat.
    Wäre es verschlüsselt, wären die Daten trotzdem nutzlos.
    Oder seh ich das zu paranoid?
     
  4. Zam Pano

    Zam Pano Well-Known Member Aktivist

    ich dachte an Rechte im Filesystem. Die DB zu hacken mag zwar die Verweise offenlegen, die man per Hash() ggf. auch verschlüsselt, aber wenn der Zugriff auf das Filesystem nicht gewährt wird, nutzen die Referenzen nichts. Es liegt an Dir die Rechte innerhalb von PHP zu vergeben und die Freigaben zu definieren.
    Unverschlüsselt liegen keine Infos in der DB. Zur Not kann man eine 2. DB aufbauen, in der nur die für Indizes nötigen Schlagworte + Ref.Nr. hinterlegt sind
     
    Zuletzt bearbeitet: 2. Oktober 2018
  5. mag

    mag New Member Aktivist

    du muesstest 'sicher' etwas genauer definieren...

    fuer passwort bist du mit dem md5 (besser: sha2, md5 gilt eigentlich als komplromitiert), am besten 'gesalzen', auf der sicheren seite.

    'gesalzen' meint, du stellst dem passwort bevor du den hash bildest eine zufaellige zeichenkette voran. die musst du dann irgendwie mit abspeichern, bspw indem du den abgespeicherten hash als tupel 'SALT-HASH' abspeicherst.
    damit machst du dictionary-angriffen das leben schwer.

    andere sensible daten kannst du mit symetrischer verschluesselung abspeichern, das ist aber nicht unbedingt 'sicher'.. der schluessel muss ja irgendwo in deinem app-code enthalten sein, sobald jmd also zugriff auf deinen php-code hat kommt er auch wieder an den klartext ran.
    und du verlierst alle arten von such-funktion.

    Daten die du nur ablegen willst, in der web-app nicht wieder drauf zugreifst, kannst du asymetrisch verschluesseln, 'einfach' durch pgp jagen. zum lesen brachst du dann den passenden secret key, den du dann zu hause/im buero/wo-auch-immer sicher verwahrst.
     
  6. mag

    mag New Member Aktivist

  7. Prenzlberger

    Prenzlberger Member Aktivist

    Danke mag, werd ich mir heute Abend nach Arbeit mal zu Gemüte führen :smiley:
     
  8. defunctional

    defunctional New Member Aktivist

    Will auch noch was hinzufügen, falls das Thema nicht eh schon gegessen ist.

    Sensible Daten geht halt leider über Text hinaus, im besonderen Nutzerbilder (also nicht die Forumsignatur sondern) wenn Benutzer mal einen Avatar von sich selbst hochladen. Und dann läuft man natürlich in die Problematik, was man damit tut. Bei uns läuft das eher so, dass wir die Datenbank von der Bilderablage separieren und die Bilder synchron verschlüsseln mit einem Key, den wir am Benutzer speichern. Das reicht für das was wir tun, Gesundheitsdaten möchte damit jetzt nicht sichern müssen :smiley:

    Der Grund warum wir jetzt keine Bilder in die Datenbank legen, was sicherlich leichter wäre, ist weil BLOB Storage nicht so super performant ist.
     
  9. war3zspam

    war3zspam New Member Aktivist

    Was Passwörter angeht natürlich nur extra dafür ausgelegte Hashverfahren wie BCrypt verwenden. Auch kryptografische Hashverfahren wie SHAXXX sind diesbezüglich eventuell nicht gut genug. BCrypt kümmert sich auch ums Salts.
    Desweiteren kann man Datenbanken im ganzen verschlüsseln. Fragt sich nur was das bringt, wenn regelmäßig bei Anfragen entschlüsselt wird. Kostet ja alles Performance. Am einfachsten ist es vllt die ganze HDD zu encrypten. Das OS decrypted dann von sich aus. Sollte dann jemand die Hardware mitnehmen wollen, kann man damit nix anfangen.
    Vllt nochmal genauer die Konstellation beschreiben. Wo liegt die DB? Welches OS wird eingesetzt? etc. etc.
     
  10. heuchler

    heuchler Member Aktivist

    Es gibt für Postgres und MySQL Plugins oder Patches zum Verschlüsseln. Das geht natürlich auf die Performance. Wir haben in der Fa. einiges durchprobiert. Es muss seh sicher sein da wir für Kunden Finanz und medizinische Daten verarbeiten.
    Der Datenbankserver ist jetzt ein Standalone Server mit eigenem Netz mit verschlüsselter Platte. Der Webserver hat 2 Netzwerkkarten und die Verbindung zwischen den beiden läuft über TLS mit Zertifikaten auf beiden Seiten. Zusätzlich ist der Zugang vom Webserver auf die Datenbank über Rollen beschränkt. Der Kunde lädt deine Daten (GPG verschlüsselt) hoch und empfängt die Daten auch verschlüsselt. Hochgeladene Daten können vom Webserver nicht mehr gelesen werden. Lesen kann der Kunde nur seine eigenen Daten. Intern kommen die Bearbeiter mit abgestuften Rechten an die Daten. Dafür gibt es Chipkarten und jeder Zugriff wird protokolliert. Als DB wird Postgres verwendet.
    Das ganze System ist von einem externen Sicherheitsdienstleister mit guter Expertise erstellt werden und von einem anderen Dienstleister überprüft und für gut befunden worden. Natürlich gibts für die Kundschaft auch ein Zertifikat vom TÜV. Der ganze Spaß war nicht gerade billig.
     
  11. vhartman

    vhartman Member Aktivist

    Habs herunter geladen in Chrome hoffentlich funktionierts, Danke bereits im voraus für den Tipp