Sicherheit: Im Browser gespeicherte Passwörter – Wie sicher sind sie wirklich?

Jeder kennt es. Gerade wenn man sich ein frisches Gerät kauft, ob Computer oder Notebook. Beim Smartphone bleibt man manchmal verschont. Egal ob Chrome oder Firefox, Edge oder Opera. So ziemlich jeder Browser hat heutzutage die Funktionalität die Passwörter eines Benutzers zu speichern. Und das ist toll. Wirklich! Ich muss mir kein Passwort mehr merken oder es nicht jedes Mal eintippen sind dabei die Gedanken die man hat. Man ist froh, dass der Browser einem die Arbeit abnimmt. Personen die um ihre Daten besorgt sind kann ich aber, teilweise, beruhigen. Solange man nicht mit einem Firefox Sync oder einem Google oder Opera Konto angemeldet ist, werden Passwörter nicht mit den jeweiligen Servern der Anbieter synchronisiert. Das bedeutet, diese Daten bleiben nur auf dem lokalen Gerät gespeichert. Und das tollste daran ist, sie werden verschlüsselt gespeichert. Damit ist ja alles sicher und unbedenklich, denkt man.

Mal abgesehen von der Tatsache, dass jede Verschlüsselung irgendwann einmal als unsicher gilt und geknackt wird gibt es aber einen vergleichsweise einfachen Umstand den man sich zu Nutze machen kann. Wer diese Frage beantwortet kann sofort wissen ob seine Daten gefährdet sind, theoretisch.

Ist das Benutzerkonto unter Windows, macOS oder Linux mit einem Passwort geschützt?

Wenn ja, ist schon mal eine mögliche Quelle ausgeschaltet das Passwort auszulesen, denn alle Browser bieten auch die Möglichkeit gespeicherte Passwörter anzuzeigen. Das kann sinnvoll sein, wenn man sein Passwort auf einer Seite einmal vergessen hat, oder zum Verhängnis werden, wenn das Benutzerkonto des Betriebssystems nicht mit einem Passwort versehen ist. Grund ist der, dass die Browser die Passwörter nur im Klartext darstellen, wenn man das Passwort des Benutzerkontos eingibt und es korrekt ist. Ein nicht vorhandenes Passwort bedeutet im schlimmsten Fall zum Beispiel unter macOS, dass ich die Abfrage einfach nur mit “OK” bestätigen muss, denn der Benutzer ist vorausgefüllt und es ist ja gar kein Passwort gesetzt, also ein leeres Feld wäre das korrekte Passwort.

Fazit

Egal ob man was zu verbergen hat oder nicht. Ein Benutzerkonto sollte in jedem Fall mit einem Passwort geschützt werden. Natürlich gibt es andere Methoden an die Daten zu kommen, dazu mehr in einem späteren Artikel.

Artikelreihe: Sicherheit

Die kommende Zeit wird es einige wenige Artikel zum Thema Sicherheit geben. Angefangen am 12.03. und 13.03. mit Artikeln zum Thema Browser-Passwörter, wie sicher sie sind und wie man sie ausliest wenn man sie vergisst, geht es zu einem späteren Zeitpunkt weiter mit dem Thema ob man an die Browser-Passwörter und auch an die Daten eines Benutzers kommt, auch wenn dieser mit einem Passwort verschlüsselt ist und wie man sich zumindest besser dagegen schützen kann.

PHP – Kanntest du schon? – SQL Injections

SQL Injections ist ein Thema seit jeher. Die Gefahr ist, dass man über Eingabefelder die SQL-Abfrage so manipulieren kann, um Zugriff auf andere Daten zu erhalten. Das ist einfacher als man denkt. Folgende Beispiel PHP Datei:

Als Beispieldatenbank nehme ich die Datenbank phplogin aus dem Artikel des PHP Login Projekt welche eine Tabelle account erhält. Hier stehen sehr sensible Informationen drin und wir können uns über das simple Query alle Account-Daten aus der Tabelle ausgeben lassen. Wie? Ganz einfach:

Normalerweise würden wir in das Input-Feld nur unsere E-Mail Adresse eintragen, ein Bösewicht (auch Cracker – fälschlicherweise Hacker) genannt könnte aber statt seine E-Mail die obige Zeile eingeben. Eigentlich sollte nur jeder User seine Daten als Ausgabe erhalten, doch folgende Ausgabe erhalten wir:

Wir erhalten alle Daten aus der Tabelle und zwar nicht nur für unseren Benutzer, denn durch die Eingabe hat sich das SQL-Statement von

in folgendes geändert:

Entweder ist die Mail leer, oder 1=1. 1=1 ist eine Bedingung, man könnte sie auch true nennen, die immer zutrifft und damit die Bedingung sofort erfüllt und das Statement ausführt.

Wie verhindert man SQL Injections?

Das Stichwort, bzw. die Stichwörter hier lauten: Prepared Statements. Wie der Name schon erahnen lässt gibt man hier die Daten nicht direkt als gesamtes SQL-Statement an den Datenbank Server. Vielmehr lässt man den Datenbankserver das Statement vorbereitet. Das tun wir, indem wir ihm folgendes SQL-Statement “preparen” lassen:

Er weiß jetzt was er machen soll, nämlich einen SELECT * aus der Tabelle account und als Bedingung wird eine email kommen. Der Server kann Vorbereitungen treffen hat aber noch keine konkreten Daten zum Ausführen dieses Befehls. Erst im zweiten Schritt lässt man den Datenbankserver dieses Statement ausführen und gibt ihm zeitgleich als Parameter die Daten mit, Ausschnitt:

Weil man beim PDO-Connector besser mit Prepared Statements arbeiten kann und dieser im Gegensatz zum MySQLi-Connector Named Parameters unterstützt und auch aus weiteren Gründen, habe ich in diesem Beispiel zur Prävention von SQL-Injection vom MySQLIi-Connector zum PDO-Connector gewechselt.

Der vollständige Code hier:

Geben wir nun unsere E-Mail Adresse ein, erhalten wir nur unsere Daten. Verwenden wir wieder den Teil für die SQL-Injection (siehe unten), erhalten wir eine leere Seite (weiß), weil intern ein Fehler geworfen wird der bei mir zumindest nicht direkt angezeigt wird.

Crossplattform Passwort-Manager Enpass

Gerade heutzutage wird das Thema Sicherheit immer wichtiger. Wir alle haben diverse Logins auf verschiedenen Webseiten und viele nutzen leider immer nur ein oder zwei Passwörter für alle Dienste. Bis vor wenigen Jahren gab es noch keine Zwei-Faktor-Authentifizierung (2FA), heutzutage schon. Die 2FA schützt die Accounts deutlich besser, dennoch sollte man unterschiedliche Passwörter für jede Webseite und jeden Dienst haben.

Auf der Webseite “Have I been pwned” kann man eine E-Mail-Adresse oder einen Benutzernamen eingeben und erfährt, ob man von einem Daten-Leck betroffen sein könnte oder nicht. Natürlich ist diese Liste vermutlich nicht vollständig und man sollte sich nicht darauf verlassen, nicht doch betroffen zu sein.

Egal ob ihr nun betroffen seid oder nicht, es zeigt uns, dass wir unsere Accounts absichern müssen und das am Besten doppelt und dreifach. Doppelt kriegen wir ohne Probleme bei fast allen Webseiten und Diensten hin:

  1. Ein einmaliges sicheres Passwort (Länge, Groß/Kleinschreibung, Sonderzeichen, etc.) für jede Webseite/Dienst verwenden
  2. Zwei-Faktor-Authentifizierung (2FA) aktivieren

Die Zwei-Faktor-Authentifizierung wird zwar von den meisten, aber auch heute eben nicht allen Webseiten angeboten. Wichtig ist hier im übrigen auch, sich die Backup-Codes die man erhält an einem sicheren Ort aufzubewahren, digial oder im Bankschließfach.


Jetzt habt ihr für jede Webseite und jeden Dienst ein eindeutiges Passwort, nur wie merkt ihr euch diese? Es gibt zahlreiche Passwort-Manager auf dem Markt, mehr oder weniger gute und mehr oder weniger teure. Einige Beispiele:

  • KeyPass
  • 1Password
  • Enpass

KeyPass ist ein Programm was relativ lange existiert aber nicht alle Features wie 1Password oder Enpass bietet. 1Password war lange Zeit nur der Mac-Welt bekannt und meist genutzt und existiert auch schon länger. Enpass hingegen wird immer beliebter. Ein Grund ist unter anderem das Vermarktungsmodell. 1Password gibt es seit einiger Zeit als Version 6 ausschließlich im Abonnement. Die letzte Standalone Version war Version 4 und diese konnte einmalig für Windows und einmalig für Mac oder zusammen in einem Paket gekauft werden. Da die Unterstützung aber wohl zeitnah eingestellt wird, muss man zur Abo Version greifen. Ein Abo in der Single-Version kostet in Deutschland monatlich 4,49€, die Amerikaner hingegen müssen nur $2,99 zahlen. Die Family-Version kostet 7,49€ in Deutschland und $4,99€ in den USA. Der Vorteil: Alle Geräte/Betriebssysteme sind inklusive und in der Family können 5 Benutzer ihre Daten in eigenen Tresoren oder geteilten Tresoren ablegen.

Für mich als Auszubildender ist Geld knapp, weswegen die Abo-Version von 1Password für mich nicht in Frage kam. Wie der Zufall es so wollte, stieß ich auf Enpass. Enpass hat den Vorteil, dass es in der Desktop-Variante für Windows, Linux und macOS kostenlos daherkommt und für die mobilen Varianten iOS und Android einmalig 10,99€. Synchronisiert wird mit Dropbox, OneDrive, Google Drive, WebDAV (ownCloud/Nextcloud) und weiteren zwischen den Geräten und als Backup. Die Oberfläche von Enpass ist deutlich schlanker und intuitiver als die von 1Password bietet aber ebenso Funktionen wie benutzerdefinierte Felder wie 1Password. Zusätzlich zu den Desktop-Versionen und den mobilen Varianten gibt es noch eine Portable-Version zur Verwendung auf z.B. USB-Sticks, die das Leben nochmals erleichtert.

Zudem bieten Enpass, wie auch 1Password diverse Browser-Erweiterungen an um die Integration in alle gängigen Browser nahtlos zu machen. Login-Daten lassen sich so auf Knopfdruck ausfüllen.

Enpass bekommt ihr hier: https://www.enpass.io/


Mein Eindruck:

Enpass wie auch 1Password sind tolle Passwort-Manager die in der Grundfunktion beide überzeugen. Beide trumpfen mit Erweiterungen und diversen Features. Für mich persönlich ist die Enpass Oberfläche etwas schlanker und moderner aufgesetzt und durch die Abo-Kosten bei 1Password fällt es für mich weg.

Ich benutze Enpass mittlerweile als Desktop-Version für Windows und macOS sowie als Portable und als kostenloser Testversion für iOS. Bisher konnte ich keinen Absturz verzeichnen und die Einrichtung war einfach. Auch die Synchronisierung mit Dropbox funktioniert super. Lediglich die Aktivierung der Browser-Erweiterungen musste einmal manuell in den Einstellungen vorgenommen werden, dass musste ich aber erst selber herausfinden. Für mich ist Enpass eine absolute Empfehlung.

Lediglich wenn man mehrere Tresore oder vielmehr mehrere Familien-Mitglieder versorgen möchte, macht meiner Meinung nach 1Password Sinn.