Datensätze verschlüsselt in Datenbank speichern

Bei 99points.info habe ich heute eine Klasse gefunden, die von ZeeShaN dort gepostet wurde. Dies PHP-Class ist zum sicheren ver- und entschlüsseln von Daten gedacht.

Eine gute Gelegenheit, mal ein kleines Script zu schreiben, in dem ich zeige, wie man Daten aus einem Html-Formular verschlüsselt in eine MySQL-Datenbank ablegen und diese anschließend aus der Datenbank auslesen und wieder entschlüsselt anzeigen lassen kann.

Hier zuerst einmal der Inhalt der Datei db.inc.php, welche im Verzeichnis inc liegt. Diese Datei muss eingebunden werden bevor mit der Datenbank gearbeitet werden soll, da diese die Verbindung zur Datenbank herstellt. Die Zugangsdaten müssen Sie natürlich vorher noch anpassen. Ich benutze zum testen meiner Scripts einen lokalen Server, weshalb hier die Zugangsdaten für zwei Datenbanken angegeben werden.

inc/db.inc.php

 

index.php

ACHTUNG:
Das in PASSPHRASE definierte Passwort sollte man weder weitergeben noch nachträglich ändern, da sich sonst die zuvor verschlüsselten Daten nicht mehr entschlüsseln lassen.

Ich denke dass dies ein äußerst praktisches Beispiel ist, wie man ohne viel Mühe, sensible Daten in der Datenbank sichern kann. Wer Anregungen oder Verbesserungsvorschläge hat, postet diese bitte als Kommentar zu diesem Beitrag.

Über Enrico S.

Programmierer, Webdesigner, Grafiker, Blogger, Screencaster, Arduino- und eMobility Enthusiast.

2 Kommentare zu “Datensätze verschlüsselt in Datenbank speichern

  1. Hi,

    auch hierzu meine Meinung !
    Ich finde die Variante wirklich Gut!

    Mir kommt da allerdings ein Gedanke.
    Wenn ich zum Beispiel dies auf die Kundendaten eines OnlineShops anwende, dann würde ich mir wünschen, dass das Passwort „nicht“ in der INDEX.php steht.
    Hintergrund ist, dass es in den letzten zwei Jahren sehr oft vorgekommen ist, dass XTcommerce und Forks gehackt wurden.

    Eine Art …

    define(„PASSPHRASE“, „http://mein_anderer_server.com/xx/xx/kennwort.txt“);

    SERVER-II …
    [htaccess] IP vom Server I
    Verzeichnis xx/xx/kennwort.php

    kennwort.txt
    4x,bj]8c92v7/#Nt4P[3V3nUKqo6fg

    Das wäre der Hit.
    Denn wenn der Shop gehackt wird und der Hacker feststellt, dass der PASSPHRASE auf einem anderen Server hinterlegt ist, muss er diesen auch noch knacken. Um das dann auch noch zu erschweren eine htaccess für das Verzeichnis erstellen, welche nur Computer für die Abfrage mit einer bestimmten IP Zugriff auf das Verzeichnis gewährt, ist dies wohl ein Mega Aufwand.

    Würde das laufen und viel langsamer dürfte das System ja nicht werden – WENN der Server-II nicht down ist > Smiley < !?

    MfG Thomas Berger

    • Gute Idee von Dir.
      Man könnte die Passphrase aber auch direkt in der Datenbank ablegen, dort eventuell sogar noch als sha1 hash.
      Wie immer gibt es so viele Möglichkeiten und jeder muss selber wissen welchen Aufwand er bereit ist auf sich zu nehmen.
      Es kommt ja auch immer auf die Art des Projektes an. Ich kann natürlich kein großes onlineshop-Projekt mit einem Blog gleichstellen.

      Aber schön dass sich auch mal einer Gedanken macht, diese hier veröffentlicht und nicht alles eins zu eins übernimmt.