Passwortmanager füllt falsche Felder

  • Hi,
    vorab: ich weiß nicht ob das Thema in die Sicherheitsecke gehört. Darum bitte ich um Nachsicht und ggf. einen Mod dieses Thema entsprechend zu verschieben.

    Kurz die Ausgangssituation:
    Ich habe eine Plattform in php/js/html/css, und mit smarty als templatesystem, geschrieben.
    Diese Plattform verfügt über eine Userverwaltung auf Administrationsebene.

    Nun zum Problem:
    User können, nachdem sie sich eingeloggt haben, ihre Passwörter bekannterweise im internen Firefox Passwortmanager speichern. Sobald das passiert ist fügt Firefox auch an anderen Stellen die Userdaten in Formularfelder ein, anstatt nur im Login. Die <input>-Felder haben alle unterschiedliche Namen, und die Formulare liegen einige html-Seiten voneinander getrennt. Caches sind alle schon x-mal geleert worden.

    Was veranlasst FF überhaupt fremde Felder zu füllen, sobald er ein PW-Input sieht?
    Bisher habe ich eigentlich angenommen das der PW-Manager sich die URL merkt, zudem den Namen des Inputfeldes, und dann entsprechend die Daten einsetzt. Aber irgendwie doch nicht :/


    Login-Input:
    <input type="password" name="loginPassword" maxlength="20" class="text"/>

    Passwortfeld an ganz anderer Stelle:
    <input type="password" name="Password1" maxlength="100" class="input_field" />


    Über Hilfe wäre ich sehr erfreut.

    MfG

    BaronVA

  • Quelle: BaronVonAwesome

    Zitat von BaronVonAwesome

    Was veranlasst FF überhaupt fremde Felder zu füllen, sobald er ein PW-Input sieht?

    Das ist eine "Komfortfunktion" des PW-Managers. Er vermutet hinter einem Passwortfeld eben genau das und trägt dann die Daten ein, wenn vorhanden. Da der Fx 3 weder den kompletten URL speichert, noch den Feldnamen Priorität einräumt, kommt es zu solchen Phänomenen.

    Zitat

    das der PW-Manager sich die URL merkt, zudem den Namen des Inputfeldes

    Er merkt sich Protokoll, Host und Port, zwar auch die Feldbezeichner, aber diese werden nicht als hartes Kriterium aufgefasst.

    Zu was brauchst du denn ein weiteres Passwortfeld auf der Seite?

  • Hi,

    danke für die rasche Antwort.

    Ein weiteres Passwortfeld benötige ich wenn angemeldete User in ihrem Profil z.B ein neues Passwort setzen wollen. Dieses neue Passwort muss dann natürlich auch nochmal bestätigt werden.


    Gibt es irgendwo ein Doku/Anleitung die eben die genaue Funktionsweise dieses Passwortmanagers erläutert. Wäre ja gewollt es mir selbst zu erarbeiten, jedoch hab ich bisher nichts gefunden.

  • Die beste Doku ist das wohl der Src-Code:
    http://mxr.mozilla.org/mozilla/source…LoginManager.js

    Insbesondere interessant:
    http://mxr.mozilla.org/mozilla/source…nManager.js#680 ff

    Als günstig in Bezug auf eine Passwortänderung sehe ich die Verwendung von drei Passwortfeldern an. Eines zur Eingabe des alten, zwei zur Eingabe des neuen Passworts (somit Prüfung möglich). Dies harmoniert sehr gut mit dem Fx-Passwortmanager, ein bestehendes Passwort wird dann auch dort geändert.
    Bei mindestens zwei Passwortfeldern trägt der Fx auch keine Daten automatisch ein.

    Verwende zwei Passwortfelder ohne

  • Das Feld zur Eingabe des alten PW hab ich natürlich auch, jedoch vergessen zu erwähnen. Entsprechend also auch drei Felder für Passwörter.

    Mit dem Speichern der Daten hat der Passwortmanager auch weniger Probleme, damit kommt er wirklich gut klar.
    Wenn ich jedoch die Profilseite aufrufe füllt er das erste Passwortfeld (nicht zwingend das alte Passwortfeld) mit meinem gespeicherten Passwort, und das nächst darüber liegende Textfeld (hier das Emailfeld) mit dem Usernamen.

    Danke für die Links, werde sie mir gleich mal genauer angucken.

  • Also mein Login.html sieht wie folgt aus (von smarty und co bereinigt):

    <input type="text" name="loginUsername" maxlength="50" id="username" />
    <input type="password" name="loginPassword" maxlength="20" class="text" />

    Die Profilformular.html aufs wesentliche reduziert so:

    <input type="text" name="username" value="{}" class="input_field" maxlength="100" />
    <input type="text" name="firstname" value="{}" class="input_field" maxlength="100" />
    <input type="text" name="lastname" value="{}" class="input_field" maxlength="100" />
    <input type="text" name="email" value="{}" class="input_field" maxlength="100" />

    <input type="password" name="oldPassword" class="input_field" maxlength="100" />
    <input type="password" name="password1" class="input_field" maxlength="100" />
    <input type="password" name="password2" class="input_field" maxlength="100" />

    Die Daten die Firefox im Login über oben genannte Felder erhält und speichert setzt er automatisch in das Feld "oldPassword" und den User in das Feld "email". Wenn ich diese Felder entferne nimmt er sich halt ein anderes, z.b "password1" und "lastname". Nun müsste hoffentlich deutlich genug sein wofür ich welche Felder brauche ;)

  • Auf der Passwort-Ändern-Seite sollten keine Textfelder vor den Passwortfeldern stehen. Natürlich ist es Jacke wie Hose, ob da nun eines oder zwei oder drei stehen. Der Fx nimmt immer das erste Passwortfeld und davon ausgehend das erste Text-Feld davor.

    Zwei Möglichkeiten bieten sich an:
    - du trennst das Ändern des Passwortes komplett ab und machst eine eigene Seite daraus
    - du ziehst den Block mit den password-Feldern nach oben, dann steht kein Textfeld mehr davor

  • So eben schnell mal getestet.
    Ich hätte mich mehr oder weniger damit anfreunden können die Passwortänderung an oberster Stelle zu haben aber leider hat das Umstellen nichts bewirkt. Der Passwortmanager setzt weiterhin ein Passwort ins Passwortfeld. Immerhin aber keinen Usernamen mehr :/, da kein Textfeld mehr davor lag.

    Eine Trennung des Formulares in Daten und Passwort halte ich nicht für besonders zweckvoll aber ich habs es trotzdem mal versucht. Habe einfach mal aus dem Formular alles entfernt was kein Passwortfeld ist und abgefeuert, jedoch auch ohne Erfolg. Es gibt nur noch drei Felder und er tut es trotzdem... :-??

  • Zitat

    Der Passwortmanager setzt weiterhin ein Passwort ins Passwortfeld.
    [...]Es gibt nur noch drei Felder und er tut es trotzdem.

    Aber dann das alte und das muss doch dort auch hin, oder?

    Wenn du allerdings das auch unbedingt verhindern willst, dann kannst du autocomplete=off für die Passwortänderung verwenden. Allerdings erlaubt/bemerkt der Fx-Passwort-Manager die Änderung des Passwortes dann erst beim nächsten Login. Die Integration wäre nicht 100%, aber tragbar und du wärst flexibler.

  • Zitat von boardraider


    [...]Es gibt nur noch drei Felder und er tut es trotzdem.Aber dann das alte und das muss doch dort auch hin, oder?

    Leider nicht, er nimmt einfach das erste Passwortfeld das er findet, und das muss nicht zwangsläufig das mit dem alten Passwort sein. (Wenn ein Admin z.b manuell einen User anlegt gibt es das alte Passwortfeld nicht, und trotzdem wird sein Passwort in das erste Feld gesetzt)

    Nun hier extra die Felder an den PW-Manager anzupassen halte ich für untragbar.
    Bleibt also für mich nur ein Fazit aus der Sache zu ziehen: Solange der Manager die URL und/oder die Feldbezeichnung nicht als Kriterium in Betracht zieht, oder dies nicht anders Erzwingbar ist (Konfiguration des Passwortmanagers ist ausgeschlossen da ich nicht auf die der User zugreifen kann), ist dieser nicht besonders durchdacht gelöst worden.

  • Zitat

    er nimmt einfach das erste Passwortfeld das er findet, und das muss nicht zwangsläufig das mit dem alten Passwort sein

    Es drehte sich zunächst um folgenden Anwendungsfall:

    Code
    <input type="password" name="oldPassword" class="input_field" maxlength="100" />
    <input type="password" name="password1" class="input_field" maxlength="100" />
    <input type="password" name="password2" class="input_field" maxlength="100" />


    Da ist das erste Feld dasjenige mit dem alten Passwort.

    Einen anderen HTML-Code bzw. Anwendungsfall hast du zuvor nicht erwähnt.

    Zitat

    Wenn ein Admin z.b manuell einen User anlegt gibt es das alte Passwortfeld nicht, und trotzdem wird sein Passwort in das erste Feld gesetzt
    [...]
    Nun hier extra die Felder an den PW-Manager anzupassen halte ich für untragbar.

    Für diesen Anwendungsfall bietet sich autocomplete=off doch vollkommen an. Der Aufwand ist lächerlich gering das Ziel allerdings erreicht.

    Zitat

    Solange der Manager die URL und/oder die Feldbezeichnung nicht als Kriterium in Betracht zieht, oder dies nicht anders Erzwingbar ist [...], ist dieser nicht besonders durchdacht gelöst worden.

    Hinter der gegenwärtigen Funktionsweise stecken viele Gedanken und Entscheidungen. Lies dir mal den Report durch, dann hast du ein Bild davon:
    https://bugzilla.mozilla.org/show_bug.cgi?id=360493

    Es nicht Aufgabe und Intention von Mozilla einen mächtigen Passwortmanager zu erstellen, der jeden erdenklichen Anwendungsfall abdeckt, sondern einen leistungsfähigen Browser. Diesem wurde ein rudimentärer PW-Manager spendiert, der den User unterstützt.
    Dir als Entwickler einer Seite kann es gleichgültig sein, wie die Daten in die Formulare wandern. Wie du richtig erkannt hast, ist dein Einfluss auf den User ohnehin begrenzt, viele deaktivieren den PWM auch oder nutzen Drittlösungen. Darüber hinaus unterscheiden sich die verschiedenen Browser in den Implementierungen.
    In deiner Rolle als Anwender steht es dir frei selbst eine Wahl zu treffen. Wenn dir die Funktion des Fx-PWM nicht zusagt, dann greif auf andere Lösungen zurück.

    Ich wünsche mir übrigens auch einen mächtigeren PW-Manager, verstehe aber die Gründe, warum die Dinge so sind wie sie sind. Das automatische Eintragen von Passwörtern habe ich deaktiviert. Für die seltenen Ausnahmefälle in denen der Fx-PWM nicht ausreichend ist, greife ich auf andere Lösungen zurück.
    Als Entwickler halte ich Formulare frei von JS und kümmere mich ansonsten nur am Rande (Formularfelder) um die Art, wie User ihre Passwörter verwalten.

  • Ich empfehle KeePass
    Kurzbeschreibung: Benutzernamenfeld der Webseite anklicken, Tastenkombination Strg-Alt-A drücken, fertig, KeePass erkennt selber, welche Credentials da rein müssen (für jede Webseite andere).

    Vorteil: Kein Risiko, daß die Zugangsdaten weg sind, wenn das Profil mal crasht, verwendbar mit jedem Browser und auf jedem Rechner (KeePass 1.x gibt es portable, man kann aber auch einfach seine Paßwort-Datenbank auf USB mit sich führen, wesentlich höhere Sicherheit durch eine Reihe von Maßnahmen.

    OpenSource, deutschsprachig, kostenlos.

  • Zitat von boardraider

    Einen anderen HTML-Code bzw. Anwendungsfall hast du zuvor nicht erwähnt.

    Zitat von BaronVonAwesome

    Wenn ein Admin z.b manuell einen User anlegt gibt es das alte Passwortfeld nicht, und trotzdem wird sein Passwort in das erste Feld gesetzt

    Zitat von boardraider

    Für diesen Anwendungsfall bietet sich autocomplete=off doch vollkommen an. Der Aufwand ist lächerlich gering das Ziel allerdings erreicht.


    Gerade musste ich feststellen das du mit autocomplete=off keine Konfiguration des PW-Managers meinst sondern das es dieses Attribut in HTML gibt. Danke, da hast du natürlich Recht und ich habe wieder was neues gelernt :klasse:


    Zitat von boardraider

    Als Entwickler halte ich Formulare frei von JS und kümmere mich ansonsten nur am Rande (Formularfelder) um die Art, wie User ihre Passwörter verwalten.


    Das war ja auch genau mein Ziel, doch mir ist der Manager über die Leber gelaufen.

    Recht herzlichen Dank für deine Hilfe und die investierte Zeit.


    Zitat von Cosmo

    Ich empfehle KeePass


    Hi, im Grunde geht es ja darum dass die angemeldeten User der Plattform keine Probleme haben wenn der Firefox automatisch Felder setzt. Man möchte ja alle Probleme die bei so etwas entstehen könnten vermeiden. KeepassX würde mir da auch nicht helfen können.
    Kurz Offtopic: KeePassX benutze ich auch, jedoch nicht für Webzugangsdaten. Gibt es denn eine bequeme Möglichkeit Passwörter direkt beim Speichern in KeepassX zu sichern, oder muss man die auch manuell eintragen?

  • Quelle: BaronVonAwesome

    Zitat von BaronVonAwesome

    Gerade musste ich feststellen das du mit autocomplete=off keine Konfiguration des PW-Managers meinst sondern das es dieses Attribut in HTML gibt.

    Ok, das hebt dann auch meine Verwunderung auf, warum dir das zu umständlich war :D

    Zitat

    Gibt es denn eine bequeme Möglichkeit Passwörter direkt beim Speichern in KeepassX zu sichern, oder muss man die auch manuell eintragen?

    Die Möglichkeit gibt es nicht. KeePassX bietet keine API oder kein CLI um auf die DB zuzugreifen. Ansonsten wäre eine Anbindung über eine Fx-Erweiterung eine ziemlich klasse Sache.