it-swarm.com.de

Verhindern, dass der Browser die Anmeldeinformationen merkt (Passwort)

Ist es möglich, nach der Bearbeitung eines Login-Formulars zu verhindern, dass der Browser die Option bietet, sich das Passwort zu merken?

Ich weiß, dass es hier gefragt und beantwortet wurde, aber keine der Antworten hat bisher funktioniert, selbst eine schlug vor:

autocomplete="off"

Das hat aber auch nicht geklappt.

Ich verwende AngularJS und Jade als Template-Engine (nicht sicher, ob dies relevant ist oder nicht). Gibt es eine Möglichkeit, dies zu tun?

6
DannyG

wenn eine Site für ein Formular die Option "Autovervollständigen" auf "Aus" setzt und das Formular Eingabefelder für Benutzername und Kennwort enthält, bietet der Browser weiterhin an, sich an diese Anmeldung zu erinnern. Wenn der Benutzer zustimmt, füllt der Browser diese Felder beim nächsten Mal automatisch aus Benutzer besucht diese Seite.

https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion

Sie sollten auch autocomplete="off" in Ihrer Eingabe sowie in Ihrem Formular festlegen.

Versionshinweise zu Google Chrome:

Die Google Chrome-Benutzeroberfläche für die automatische Vervollständigung hängt davon ab, ob die automatische Vervollständigung für Eingabeelemente und deren Formular deaktiviert ist. Wenn für ein Formular die automatische Vervollständigung deaktiviert ist und das Feld für die automatische Vervollständigung des Eingabeelements nicht aktiviert ist, zeigt Chrome möglicherweise die Meldung "Die automatische Vervollständigung für dieses Formular wurde deaktiviert" an, wenn der Nutzer nach Vorschlägen zum automatischen Ausfüllen des Eingabeelements fragt. Wenn hingegen sowohl das Formular als auch das Eingabeelement die automatische Vervollständigung deaktiviert haben, zeigt der Browser diese Meldung nicht an. Aus diesem Grund sollten Sie die automatische Vervollständigung für jeden Eingang mit benutzerdefinierter automatischer Vervollständigung deaktivieren.

4

Ich würde vorschlagen, mit Javascript eine Zufallszahl zu erstellen. Übergeben Sie diese Zufallszahl mithilfe eines ausgeblendeten Felds an Ihre Server-Aktion, und fügen Sie diese Zufallszahl in die Namen der Felder "Anmelden" und "Kennwort" ein.

Z.B. (Pseudocode, die genaue Syntax hängt davon ab, ob Sie PHP, jQuery, reines Javascript usw. verwenden.)

<script>
var number = Math.random();
var login_name = 'name_'+number;
var pass_Word = 'pass_'+number;
</script>
<input name='number' value="number" type='hidden'>
<input name="login_name" type='text'>
<input name="pass_Word" type='password'>

Ihr Server liest das Feld "number" und verwendet es dann, um den Wert "name_" number und den Wert "pass_" number zu lesen.

Es spielt keine Rolle, ob der Benutzer sein Kennwort im Browser speichert oder nicht, da jedes Mal, wenn sich der Benutzer anmeldet, die Felder für Name und Kennwort unterschiedlich sind.

3
UncaAlby

Für mich als Entwickler ist das ein super nerviges Problem. Das Problem, das ich habe, ist, dass ich zwar verstehe, dass ein Benutzer sich nicht an sein Kennwort erinnern kann und dass ich diese Funktion nicht vollständig deaktivieren möchte, aber manchmal möchte ich sie deaktivieren für nur ein bestimmtes Passwortfeld. Beispiel für ein Dialogfeld zum Zurücksetzen des Kennworts. Ich möchte sie zwingen, ihr altes Passwort erneut einzugeben und dann natürlich das neue zweimal einzugeben. Nun, es ist meine Erfahrung, dass, egal wie ich das "alte" Passwort nenne, es automatisch mit dem "gespeicherten" Passwort gefüllt wird (in Firefox 49.0.1 sowieso). Vielleicht verstehe ich das hier falsch, aber das ist meine Erfahrung, es füllt nur die Tatsache aus, dass sich der Name dieser Eingabe von dem des Eingabefelds "Login" unterscheidet. Das Verhalten, das ich sehe, ist im Grunde, dass der Browser zu sagen scheint, "Dieser Benutzer hat sich ein Passwort für diese Site gemerkt, also füllen Sie jetzt einfach jedes Feld" input type = 'password' "mit diesem Passwort, unabhängig vom Namen. Es scheint mir so Dies sollte auf dem Attribut 'name' basieren, aber für mich (auf mehreren Websites, an denen ich gearbeitet habe) scheint dies nicht der Fall zu sein.

Meine Lösung:

  1. Färben Sie dieses Passwortfeld so ein, dass die 'Passwortpunkte' beim Laden der Seite im Wesentlichen unsichtbar sind.
  2. onload, onblur, nach einer Zeitüberschreitung oder wie auch immer Sie dies tun möchten, setzen Sie den Wert dieses Kennwortfelds mit JQuery oder JS auf nothing (leer) und setzen Sie die Farbe des Felds auf den gewünschten Wert.

    $("#old_password").val('').css('color','black);
    
1
MinnesotaSlim

Da Sie AngularJS verwenden, können Sie das Feld unbenannt lassen und über das Modell auf die darin enthaltenen Daten zugreifen:

Login: <input ng-model="login" type="text" />
Password: <input ng-model="password" type="password" autocomplete="off" />

und in Ihrer Javascript-Datei:

$scope.doLogin = function() {
    var dataObj = {
        login: $scope.login,
        password: $scope.password
    };
    var res = $http.post('/login', dataObj);
}

Getestet in IE10 und Chrome 54

1
madgangmixers

Dieser Beitrag ist etwas alt, aber da ich eine Lösung gefunden habe, die für mich funktioniert (zumindest mit Chrome Version 56), werde ich ihn hier veröffentlichen.

Wenn Sie die Attribute name und password in Ihrer input entfernen, werden Sie von Chrome nicht aufgefordert, das Passwort zu speichern. Dann müssen Sie nur noch die fehlenden Attribute per Code hinzufügen, bevor Sie das Formular abschicken:

<!-- Do not set "id" and "name" attributes -->
Login: <input type="text">
Password: <input type="password">
<!-- Handle submit action -->
<input type="submit" onclick="login(this)">

Dann in Javascript:

function login(submitButton) {
    var form = submitButton.form;
    // fill input names by code before submitting
    var inputs = $(form).find('input');
    $(inputs[0]).attr('name', 'userName');
    $(inputs[1]).attr('name', 'password');
    form.submit();
}

Ich hoffe das wird helfen. Nur für Chrome 56 getestet.

1
Olivier Levrey

Ich habe festgestellt, dass Firefox 52.0.2 unglaublich entschlossen ist, sich die Werte für die automatische Vervollständigung zu merken. Ich habe fast alles versucht, was oben vorgeschlagen wurde, einschließlich der Änderung der Namensattribute in zufällige Werte. Das Einzige, was für mich funktioniert, ist, die Werte mit Javascript auf "" zu setzen, nachdem sich der Browser mit dem Formular zurechtgefunden hat.

Mein Anwendungsfall hat das Glück, dass ich nicht auf CSS-Tricks zurückgreifen muss, um ein verwirrendes und/oder nerviges Aufblitzen von automatisch vervollständigten Formularwerten (wie oben von @MinnesotaSlim vorgeschlagen) zu verhindern, da mein Formular ausgeblendet wird, bis sie auf eine Schaltfläche klicken. dann wird es über ein Bootstrap-Modal angezeigt. Daher (mit jQuery),

$('#my-button').on("click",function(){        
   $('#form-login input').val("");
});
// this also works nicely
$('#my-modal').on("show.bs.modal",function(){
    $('#form-login input').val("");
})

Und ich stelle mir vor, Sie könnten den gleichen Effekt erzielen, wenn Sie Ihr Formular zunächst ausblenden und in Ihrem Dokumentladeereignis den Browser manuell überschreiben und dann das Formular anzeigen.

0
David