
Verifizierungsverfahren per E-Mail
In dem Modul „IT-Sicherheit“ haben wir grundlegende Sicherheitskonzepte wie z.B. Autorisierungsverfahren , Kryptographie, Verwendung von Firewalls und Authentifizierungsverfahren kennengelernt. Aufgrund der Pandemie erfolgte in diesem Modul eine Ausarbeitung als Leistungsnachweis. Wir haben uns in einem Dreierteam dafür entschieden, die Verifizierung per E-Mail umzusetzen.
Eingesetzt wird das Verfahren hauptsächlich bei der Registrierung eines Nutzers mit seiner E-Mail, was häufig bei Onlineshops der Fall ist. Mit Hilfe dieses Verfahrens wird ermittelt, ob der Nutzer auch den Zugriff auf die dort eingegebene E-Mailadresse besitzt.
Zur Umsetzung haben wir am Anfang ein einfaches HTML-Formular entworfen, in dem man zum einen seine E-Mailadresse und das Passwort doppelt eingeben muss. Mit der doppelten Eingabe verringern wir die Gefahr auf Rechtschreibfehler. Anschließend haben wir uns dafür entschieden, ein sogenannten Captcha („Completely Automated Public Turing Test“) einzusetzen, um zu prüfen, dass es sich bei der Eingabe auch um einen Menschen handelt. Das Captcha besteht aus einer Länge von 5 Zeichen, die sowohl Buchstaben als auch Zahlen beinhaltet. Wir haben die Verwendung des Google-Captcha in Betracht gezogen , uns dann aber gegen die Verwendung entschieden. Der Grund dafür ist, dass bei jeder Nutzung persönliche Daten (z.B. in Form von Cookies) erhoben und an Google gesendet werden. Dieses Vorhaben kann man aus Datenschutzbestimmungen des Captchas entnehmen. Um SQL-Injection vorzubeugen, haben wir uns für die Verwendung der PHP-Methoden von „mysqli“ ausgesprochen. Damit können SQL-Statements in Variablen abgespeichert und auf die Datenbank angewendet werden. Zum Beispiel kann man so prüfen, ob die eingegebene E-Mailadresse schon in der Datenbank vorhanden ist. Somit erfolgt kein direkter Zugriff auf die Datenbank.
Wurden alle Daten korrekt eingegeben, schickt einem das System eine Verifizierungsmail mit einem Verifizierungscode, an die angegebene E-Mailadresse. Parallel gelangt man weiter auf die „Verifizierungsseite“, in der dieser Code eingegeben werden muss. Die Mailadresse wird samt gehashten Passwort und einem boolschen Wert, ob die E-Mail bereits verifiziert wurde, in die Datenbank (MariaDB) eingetragen.
Aus Sicherheitsgründen darf der Code nur 3x falsch eingegeben werden. Außerdem muss die Eingabe innerhalb von 5 Minuten erfolgen. Bei dem Abbruch wird die E-Mailadresse aus der Datenbank gelöscht und man muss sich erneut registrieren. Der Countdown von 5 Minuten wurde mit Javascript realisiert. Um die Anzahl der Versuche zu zählen, haben wir PHP-Sessions verwendet. Diese ermöglichen es uns ebenfalls die Registrierungsseite „zu sperren“, damit nicht willkürlich beliebig neue E-Mailadressen eingegeben werden.
Falls es Angreifern dennoch gelingt, dieses Verfahren zu „umgehen“, um nicht verifizierte E-Mails in die Datenbank zu schreiben, wird täglich um 22 Uhr ein MySQL-Skript auf dem Server ausgeführt, der alle nicht verifizierten Daten aus der Datenbank löscht. Während der Umsetzung des leistungsnachweises kamen und stetig neue Szenarien, die man systemtechnisch absichern muss. Es steht außer Frage, dass zum Beispiel das Verfahren von Sessions leicht umgangen werden kann, indem man mehrere Browser öffnet oder seinen Verlauf/ die Cookies löscht. Für eine weitere Optimierung wäre ein höherer Zeitbedarf im Semester erforderlich gewesen, weshalb wir mit unserem erarbeiteten Semesterergebnis zufrieden sind.
Im Folgenden stelle ich zwei Screenshots dar, die zum einen die Registrierungs- als auch die Verifizierungsseite zeigen.


Kunde
Internes Projekt
Projektdauer:
Ein Semester (7. Semester)