3231 Stimmen

Wie kann man die automatische Vervollständigung von Web-Formularfeldern/Eingabe-Tags im Browser deaktivieren?

Wie kann man die automatische Vervollständigung in den wichtigsten Browsern für eine bestimmte Eingabe (oder ein Formularfeld) deaktivieren?

5 Stimmen

Bei einigen Systemen, bei denen die Tester viele Informationen immer wieder manuell eingeben müssen, könnte es sinnvoll sein, die Option zu konfigurieren, so dass man sie beim Testen deaktivieren und einfach "Tab > Pfeil nach unten > Tab > Pfeil nach unten usw." drücken kann.

0 Stimmen

Essayez github.com/terrylinooo/disableautofill.js verwendet es JavaScript, um die automatische Ausfüllfunktion des Browsers zu umgehen.

4 Stimmen

Diese Frage wird diskutiert auf meta .

2894voto

nlucaroni Punkte 46744

Firefox 30 ignoriert autocomplete="off" für Kennwörter und fragt stattdessen den Benutzer, ob das Kennwort auf dem Client gespeichert werden soll. Beachten Sie die folgenden Punkte Kommentar vom 5. Mai 2014:

  • Der Passwort-Manager immer fragt, ob es ein Kennwort speichern möchte. Passwörter werden nicht ohne die Erlaubnis des Benutzers gespeichert.
  • Wir sind nach IE und Chrome der dritte Browser, der diese Änderung vornimmt.

Nach Angaben der Mozilla-Entwickler-Netzwerk Dokumentation wird das Attribut des booleschen Formularelements autocomplete verhindert, dass Formulardaten in älteren Browsern zwischengespeichert werden.

<input type="text" name="foo" autocomplete="off" />

55 Stimmen

Das hat bei mir in Firefox 3.0.3 nicht funktioniert. Ich musste das Attribut "Autovervollständigen" in die FORM und nicht in das INPUT setzen.

23 Stimmen

Autovervollständigung ist nur in den HTML 5-Standards definiert, so dass alle Validierungen, die Sie gegen HTML 4.* durchführen, nicht funktionieren...

110 Stimmen

@Winston, Sie sollten es sowohl auf das Formular als auch auf das Eingabeelement selbst setzen. Auf diese Weise decken Sie alle Nicht-Standardisierung von Browsern ab.

376voto

Ben Combee Punkte 16303

Neben der Einstellung autocomplete=off Sie können die Namen Ihrer Formularfelder auch durch den Code, der die Seite generiert, randomisieren lassen, indem Sie vielleicht eine sitzungsspezifische Zeichenfolge an das Ende der Namen anhängen.

Wenn das Formular abgeschickt wird, können Sie diesen Teil entfernen, bevor die Daten serverseitig verarbeitet werden. Dies würde den Webbrowser daran hindern, einen Kontext für Ihr Feld zu finden und könnte auch XSRF-Angriffe verhindern, da ein Angreifer nicht in der Lage wäre, die Feldnamen für eine Formularübermittlung zu erraten.

13 Stimmen

Dies ist eine viel bessere Lösung als die Verwendung von autocomplete="off". Sie müssen lediglich bei jedem Laden der Seite einen neuen Namen generieren und diesen Namen zur künftigen Verwendung in einer $_SESSION speichern: $_SESSION['codefield_name'] = md5(uniqid('auth', true));

97 Stimmen

Nein, das ist keine bessere Lösung, denn der Ursprung der Präferenz für diese Einstellung ist der Benutzer-Agent, auch bekannt als der Webbrowser. Es besteht ein Unterschied zwischen der Unterstützung eines bestimmten Verhaltens (was HTML 5 zu tun versucht) und der Erzwingung dieses Verhaltens durch eine Entscheidung im Namen des Nutzers, was Sie als "viel bessere Lösung" bezeichnen.

19 Stimmen

Diese Lösung kann mit allen Browsern funktionieren, ist also in dieser Hinsicht "besser". Dennoch hat amn recht: Die Entscheidung, die Autovervollständigung im Namen der Benutzer zu deaktivieren, ist keine gute Idee. Das bedeutet, dass ich die Autovervollständigung nur in ganz bestimmten Situationen deaktivieren würde, z. B. wenn Sie planen, Ihre eigene Autovervollständigungsfunktion zu entwickeln und keine Konflikte oder seltsames Verhalten wünschen.

290voto

apinstein Punkte 4895

Die meisten großen Browser und Passwort-Manager ignorieren inzwischen (IMHO zu Recht) autocomplete=off .

Warum? Viele Banken und andere "Hochsicherheits"-Websites haben autocomplete=off zu ihren Anmeldeseiten "aus Sicherheitsgründen" hinzugefügt, aber dies verringert die Sicherheit, da es die Leute dazu veranlasst, die Passwörter auf diesen hochsicheren Websites so zu ändern, dass sie leicht zu merken (und damit zu knacken) sind, da die automatische Vervollständigung nicht mehr funktioniert.

Längst ignorieren die meisten Passwort-Manager autocomplete=off und jetzt fangen die Browser an, dasselbe nur für die Eingabe von Benutzernamen und Kennwort zu tun.

Leider fügen Fehler in den Autovervollständigungs-Implementierungen Benutzernamen und/oder Kennwörter in ungeeignete Formularfelder ein, was zu Fehlern bei der Formularvalidierung führt, oder schlimmer noch, es werden versehentlich Benutzernamen in Felder eingefügt, die vom Benutzer absichtlich leer gelassen wurden.

Was soll ein Webentwickler tun?

  • Wenn Sie alle Kennwortfelder auf einer Seite für sich behalten können, ist das ein guter Anfang, denn es scheint, dass das Vorhandensein eines Kennwortfeldes der Hauptauslöser für die automatische Vervollständigung von Benutzer/Passwort ist. Andernfalls lesen Sie bitte die folgenden Tipps.
  • Safari merkt, dass es 2 Passwortfelder gibt und deaktiviert in diesem Fall die automatische Vervollständigung, da es davon ausgeht, dass es sich um ein Formular zum Ändern des Passworts und nicht um ein Anmeldeformular handelt. Stellen Sie also sicher, dass Sie 2 Passwortfelder (neu und neu bestätigen) für alle Formulare verwenden, in denen Sie Folgendes zulassen
  • Chrom 34 versucht leider, Felder mit user/pass automatisch auszufüllen, wenn es ein Passwortfeld sieht. Dies ist ein ziemlich schlimmer Fehler, der hoffentlich in Safari geändert wird. Wie auch immer, das Hinzufügen dieser Option am Anfang des Formulars scheint das automatische Ausfüllen des Passworts zu deaktivieren:

    <input type="text" style="display:none">
    <input type="password" style="display:none">

Ich habe den IE oder Firefox noch nicht gründlich untersucht, werde die Antwort aber gerne aktualisieren, wenn andere in den Kommentaren Informationen haben.

9 Stimmen

Was meinen Sie mit "Wenn Sie dies auf Ihrer Seite hinzufügen, scheint das automatische Ausfüllen für die Seite deaktiviert zu sein:"

9 Stimmen

@wutzebaer, Chrome bemerkt das versteckte Passwortfeld und stoppt die automatische Vervollständigung. Angeblich soll dies verhindern, dass die Website Passwortinformationen stiehlt, ohne dass der Benutzer es merkt.

9 Stimmen

Ihr Codeschnipsel verhindert die automatische Vervollständigung von Anmeldefeldern in Chrome, Firefox, IE 8 und IE 10. Den IE 11 habe ich nicht getestet. Gut gemacht! Die einzige einfache Antwort, die noch funktioniert.

213voto

Geynen Punkte 1793

Die Lösung für Chrome besteht darin, Folgendes hinzuzufügen autocomplete="new-password" auf die Eingabeart Passwort. Bitte prüfen Sie das folgende Beispiel.

Beispiel:

<form name="myForm"" method="post">
   <input name="user" type="text" />
   <input name="pass" type="password" autocomplete="new-password" />
   <input type="submit">
</form>

Chrome füllt die Daten immer automatisch aus, wenn es ein Feld mit Kennwort eingeben gerade genug, um für dieses Feld anzugeben autocomplete = "new-password" .

Das funktioniert bei mir gut.

Hinweis: Stellen Sie sicher, dass mit F12 dass Ihre Änderungen wirksam werden. Oft speichern Browser die Seite im Cache, und das gab mir einen schlechten Eindruck, dass es nicht funktioniert, aber der Browser hat die Änderungen nicht wirklich gebracht.

4 Stimmen

Dies funktioniert in Chrome auch für andere Arten von Feldern, nicht nur für type="password".

0 Stimmen

Ich habe es mit Kennwort-, E-Mail- und Texttypen verwendet und es hat funktioniert. Ich habe es einfach wie folgt verwendet: autocomplete="new"

0 Stimmen

Autocomplete="nope" name="pswd" und verwendete <input name="dummyPassword" type="password" style="display:none;"> vor dem eigentlichen Passwort-Eingabefeld. Das hat bei mir funktioniert.

114voto

brendan Punkte 28331
<form name="form1" id="form1" method="post"
      autocomplete="off" action="http://www.example.com/form.cgi">

Dies funktioniert in Internet Explorer und Mozilla Firefox. Der Nachteil ist, dass es nicht dem XHTML-Standard entspricht.

0 Stimmen

Ich habe festgestellt, dass das Hinzufügen zum Formularelement nicht immer verhindert, dass es auf einzelne Eingaben innerhalb des Formulars angewendet wird. Daher ist es wahrscheinlich am besten, sie direkt auf das Eingabeelement zu setzen.

16 Stimmen

Eigentlich @sholsinger, ist es am besten, um es sowohl auf dem Formular zu setzen, UND auf das Eingabeelement selbst. Auf diese Weise decken Sie alle Nicht-Standardisierung von Browsern.

2 Stimmen

Leider respektiert Microsoft dies seit IE 11 nicht mehr für input type="password" . Hoffentlich entfernen keine anderen Browser diese Funktion.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X