Sicherheit

Sicherheit ist wichtig und hier findet sich alles rund um dieses Thema. Gerade als Entwickler haben wir eine große Verantwortung gegenüber den Usern!

SSO mit nginx im Eigenbau

Veröffentlicht am

Dieses Tutorial soll dabei helfen ein simples und rudimentäres SSO-System zu implementieren, bei dem nginx selbst die Authentifizierung übernimmt, hierbei ist der Login nur einmal für verschiedene Anwendungen möglich. Vorraussetzungen Für das Tutorial benötigst du PHP 7+ sowie nginx mit aktivierem Auth Modul Login-System mit PHP vorbereiten Zuerst benötigen wir eine öffentlich erreichbare Domain zum Login. Ich habe mich hierbei für folgende Struktur entschieden: public_html Document root |--- www Website root |--- index.php Einstiegspunkt |--- access_denied.php Fehler bei unzureichender Berechtigungen |--- change_password.php Self-Service zur Passwortänderung |--- headless_check.php Check für Nginx Loginstatus |--- login.php Login-Formular und Logik |--- logout.php Logout und deren Logik |--- util.php Hilfsfunktionen util.php Zuerst einmal die Hilfsfunktionsdummies: access_denied.php Diese Datei kann nach komplett eigen gestaltet werden, hier reicht eine statische Seite im Normalfall aus. headless_check.php Diese Datei wird aufgerufen, wenn nginx den Loginstatus abrpüft, hierbei muss entsprechend ein 403 - Access Denied, 200 - für Login ok und 401 für nicht angemeldet zurückgegeben werden. Ein optionaler Gruppencheck wird über den X-Groups-Header veranlasst der mit Komma getrennt die unterschiedlichen Gruppennamen enthält. login.php und logout.php Diese beiden Seiten können grundsätzlich auch komplett eigen gestalet werden, sie werden entsprechend über die index.php aufgerufen. Login Hier muss entsprechend die Hilfsfunkion für die Authentifizierung aufgerufen werden und somit der Loginstatus gesetzt. Hier kann auch entsprechend eine Zurückleitung auf die vorherige Seite erfolgen. Für den Loginstatus werden entsprechend folgende Werte aus $_SESSION berücksichtigt: Key…

Weiterlesen …

Den Überblick über Passwörter behalten

Veröffentlicht am

Was willst du von mir? Passwörter sind so etwas wie die digitalen Schlüssel in unsere virtuellen Häuser und Bruchbuden. Dabei sind sie genauso umstritten wie die Schlüssel in der "realen Welt". Ein beispiel für so eine Kritik mit Fakten ist hier zu finden. Ironischerweise setzt diese Website auf keine Verschlüsselung. Das aber nur am Rande. Und jetzt? Ob wir wollen oder nicht, Passwörter sind und bleiben wohl auf absehbare Zeit ein fundamentaler Bestandteil der Sicherung von Benutzerkonten. Und es werden immer mehr, am Besten für jedes Konto einzigartig, nicht zu einfach aber trotzdem leicht merkbar. Manche Dienste erfordern sogar in einem regelmäßigen Zyklus die Vergabe eines komplett neuen Passwortes, das nicht einmal ansatzweise dem Alten ähneln sollte. Und die Anzahl der Benutzerkonten und Dienste steigt täglich. Eine mögliche Lösung für dieses Problem des Spagat zwischen Sicherheit und Einfachheit will ich heute vorstellen. Sie nennt sich "Passwort-Manager". Wie funktioniert das? Bei Passwort-Managern handelt es sich um Tools/Programme. Das Prinzip von solchen Tools ist recht simpel. Man merkt sich ein Masterpasswort, dieses dient als Schlüssel zu seinen gesamten Passwörtern, für alle Konten. Das ganze funktioniert aber nur so gut, so sicher das Masterpasswort ist. Das Masterpasswort ist somit das einzige Passwort was man sich merken muss. Hierbei nutzen die Passwort-Tools das Masterpasswort als Schlüssel für die Verschlüsselung der Datei. Genaue Erklärungen werden hier des Platzes wegen nicht aufgezeigt. Wen es interessiert, der kann sich aber gerne im Internet hierzu weiter informieren. Für alle anderen sei gesagt, die…

Weiterlesen …

Devs: Passwörter richtig speichern

Veröffentlicht am

Viele Entwickler wissen oft nicht wie sie Passwörter richtig speichern sollen. Dabei kommen dann leider oft Eigenimplementierungen heraus, die alles andere als sicher sind. Viele basieren auf dem Geheimhaltungsprinzip, welches schon längst als veraltet gilt. Oder im schlimmsten Fall gar eine Speicherung in Klartext! Dabei gibt es viele Möglichkeiten, Passwörter sicher zu speichern. Heutzutage gibt es dafür für nahezu jede Sprache passende Implementierungen. Hierbei gibt es zwei gängige Möglichkeiten Passwörter zu sichern. Die erste Möglichkeit besteht darin die Passwörter mit einem Einweg-Hashalgorithmus zu schützen. Dies kommt allerdings nur in Frage, wenn die Passwörter nicht mehr im Klartext benötigt werden. Dies ist in der Mehrzahl der Anwendungen der Fall. Ansonsten gibt es noch diverse Verschlüsselungsverfahren, bei denen das Passwort mit einem geheimen Schlüssel verschlüsselt wird. In diesem Artikel werde ich allerdings mehr auf die Hashverfahren eingehen. Diese sind oberflächlich gesehen ersteinmal Algorithmen, die eine relativ schnelle Unkenntlichmachung des Passwortes erlauben. Die Errechnung eines Hashes ohne den Wert zu kennen, sollte dabei sehr schwer möglich, am Besten nur durch Raten möglich sein. Hierbei ist zu beachten, das diese Hashverfahren mit zunehmender Rechenleistung entsprechend unsicher werden. So sollte man regelmäßig prüfen, ob das Hashverfahren noch den aktuellen Standard entspricht. Hier ist als Beispiel md5 zu nennen, eines der ersten Verfahren. Dieses ist bereits seit Jahren knackbar und sollte für Passwörter auf gar keinen Fall Verwendung finden. Um die Sicherheit eines Verfahrens noch zu erhöhen, hierbei ist es grundsätzlich egal, um welches es sich handelt, gibt es noch eine Ergänzung. Den sogenannten Salt. Dieser…

Weiterlesen …