html - Wie deaktiviere ich die automatische Vervollständigung des Browsers für das Feld / Eingabe-Tag des Webformulars?

Translate

Wie deaktivierst du?autocompletein den wichtigsten Browsern für eine bestimmteinput(oderform field)?

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Firefox 30 ignoriertautocomplete="off"Wählen Sie bei Kennwörtern stattdessen den Benutzer aus, ob das Kennwort auf dem Client gespeichert werden soll. Beachten Sie das FolgendeKommentarab 5. Mai 2014:

  • Der Passwort-Managerimmerfordert Sie auf, ein Kennwort zu speichern. Passwörter werden nicht ohne Erlaubnis des Benutzers gespeichert.
  • Nach IE und Chrome sind wir der dritte Browser, der diese Änderung implementiert.

Laut demMozilla Developer NetworkDokumentation, das boolesche Formularelementattributautocompleteverhindert, dass Formulardaten in älteren Browsern zwischengespeichert werden.

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

Zusätzlich zuautocomplete=offSie können auch festlegen, dass die Namen Ihrer Formularfelder durch den Code, der die Seite generiert, zufällig ausgewählt werden, indem Sie möglicherweise am Ende der Namen eine sitzungsspezifische Zeichenfolge hinzufügen.

Wenn das Formular gesendet wird, können Sie diesen Teil entfernen, bevor Sie ihn auf der Serverseite verarbeiten. Dies würde verhindern, dass der Webbrowser den Kontext für Ihr Feld findet, und könnte auch dazu beitragen, XSRF-Angriffe zu verhindern, da ein Angreifer die Feldnamen für eine Formularübermittlung nicht erraten kann.

Quelle
Translate

Die meisten gängigen Browser und Passwortmanager (IMHO) ignorieren dies jetztautocomplete=off.

Warum? Viele Banken und andere "Hochsicherheits" -Websites wurden hinzugefügtautocomplete=offauf ihre Anmeldeseiten "aus Sicherheitsgründen", aber dies verringert tatsächlich die Sicherheit, da die Benutzer die Kennwörter auf diesen Hochsicherheitsseiten leicht merken (und somit knacken) müssen, da die automatische Vervollständigung unterbrochen wurde.

Vor langer Zeit haben die meisten Passwortmanager angefangen, dies zu ignorierenautocomplete=offund jetzt beginnen die Browser, dasselbe nur für die Eingabe von Benutzernamen / Passwort zu tun.

Leider fügen Fehler in den Implementierungen zur automatischen Vervollständigung Benutzernamen- und / oder Kennwortinformationen in unangemessene Formularfelder ein, was zu Fehlern bei der Formularüberprüfung führt, oder noch schlimmer, sie fügen versehentlich Benutzernamen in Felder ein, die vom Benutzer absichtlich leer gelassen wurden.

Was kann ein Webentwickler tun?

  • Wenn Sie alle Kennwortfelder auf einer Seite für sich behalten können, ist dies ein guter Anfang, da das Vorhandensein eines Kennwortfelds anscheinend der Hauptauslöser für die automatische Vervollständigung von Benutzer / Pass ist. Lesen Sie andernfalls die folgenden Tipps.
  • Safaristellt fest, dass 2 Kennwortfelder vorhanden sind, und deaktiviert in diesem Fall die automatische Vervollständigung, sofern es sich um ein Formular zum Ändern des Kennworts und nicht um ein Anmeldeformular handelt. Stellen Sie daher sicher, dass Sie für alle Formulare, die Sie zulassen, zwei Kennwortfelder (neu und neu bestätigen) verwenden
  • Chrom34 wird leider versuchen, Felder automatisch mit user / pass auszufüllen, wenn ein Kennwortfeld angezeigt wird. Dies ist ein ziemlich schlimmer Fehler, der hoffentlich das Safari-Verhalten ändern wird. Wenn Sie dies jedoch oben in Ihrem Formular hinzufügen, wird das automatische Ausfüllen des Kennworts anscheinend deaktiviert:

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

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

Quelle
Translate

Manchmalsogar Autocomplete = auswürdenicht verhindern zu füllenin Anmeldeinformationen in falsche Felder, aber nicht Benutzer- oder Spitznamenfeld.

Diese Problemumgehung ist zusätzlich zu Apinsteins Beitrag zum Browserverhalten.

Korrigieren Sie das automatische Ausfüllen des Browsers schreibgeschützt und setzen Sie den Fokus auf den Fokus (Klicken und Tabulator).

 <input type="password" readonly  
     onfocus="this.removeAttribute('readonly');"/>

Update: Mobile Safari setzt den Cursor in das Feld, zeigt jedoch keine virtuelle Tastatur an. New Fix funktioniert wie zuvor, behandelt jedoch die virtuelle Tastatur:

<input id="email" readonly type="email" onfocus="if (this.hasAttribute('readonly')) {
    this.removeAttribute('readonly');
    // fix for mobile safari to show virtual keyboard
    this.blur();    this.focus();  }" />

Live-Demohttps://jsfiddle.net/danielsuess/n0scguv6/

// UpdateEnd

Weil der Browser die Anmeldeinformationen automatisch in ein falsches Textfeld ausfüllt!?

Ich bemerke dieses seltsame Verhalten in Chrome und Safari, wenn Kennwortfelder vorhanden sinddie gleiche Form.Ich denke, der Browser sucht nach einem Passwortfeld, um Ihre gespeicherten Anmeldeinformationen einzufügen. Dann füllt es automatisch das nächste textähnliche Eingabefeld, das vor dem Kennwortfeld im DOM angezeigt wird (nur aufgrund von Beobachtungen erraten). Da der Browser die letzte Instanz ist und Sie sie nicht steuern können,

Diese schreibgeschützte Korrektur oben hat bei mir funktioniert.

Quelle
Translate
<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 sich nicht um einen XHTML-Standard handelt.

Quelle
Translate

Die Lösung für Chrome ist das Hinzufügenautocomplete="new-password"zum eingegebenen Passwort.

Beispiel:

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

Chrome vervollständigt die Daten immer automatisch, wenn es eine Box mit findetPasswort eingeben, gerade genug, um für dieses Feld anzuzeigenautocomplete = "new-password".

Das funktioniert gut für mich.

Hinweis: Stellen Sie mit F12 sicher, dass Ihre Änderungen wirksam werden. Oft speichern Browser die Seite im Cache. Dies gab mir den schlechten Eindruck, dass es nicht funktioniert hat, aber der Browser hat die Änderungen nicht tatsächlich übernommen.

Quelle
Translate

Wie andere gesagt haben, lautet die Antwortautocomplete="off"

Ich denke jedoch, dass es sich lohnt, darauf hinzuweisenWarumEs ist eine gute Idee, dies in bestimmten Fällen als Antwort auf diese undDuplikatFragen haben gezeigt, dass es besser ist, es nicht auszuschalten.

Das Stoppen von Browsern, in denen Kreditkartennummern gespeichert sind, sollte nicht den Benutzern überlassen bleiben. Zu viele Benutzer werden nicht einmal erkennen, dass es sich um ein Problem handelt.

Es ist besonders wichtig, diese Option in Feldern für Kreditkarten-Sicherheitscodes zu deaktivieren. Wiediese SeiteZustände:

"Speichern Sie niemals den Sicherheitscode ... sein Wert hängt von der Annahme ab, dass die einzige Möglichkeit, ihn bereitzustellen, darin besteht, ihn von der physischen Kreditkarte zu lesen, um zu beweisen, dass die Person, die ihn liefert, die Karte tatsächlich besitzt."

Das Problem ist, wenn es sich um einen öffentlichen Computer handelt (Cyber-Café, Bibliothek usw.), können andere Benutzer Ihre Kartendaten leicht stehlen, und selbst auf Ihrem eigenen Computer kann eine schädliche Website vorhanden seinAutocomplete-Daten stehlen.

Quelle
Translate

Ich muss darum bitten, mich von den Antworten zu unterscheiden, die besagen, um zu vermeiden, dass die automatische Vervollständigung deaktiviert wird.

Das erste, was zu erwähnen ist, ist, dass die automatische Vervollständigung, die in Anmeldeformularfeldern nicht explizit deaktiviert wird, ein PCI-DSS-Fehler ist. Wenn der lokale Computer eines Benutzers kompromittiert wird, können alle automatischen Vervollständigungsdaten von einem Angreifer trivial abgerufen werden, da sie im Clear gespeichert sind.

Es gibt sicherlich ein Argument für die Benutzerfreundlichkeit, aber es gibt eine sehr gute Balance, wenn es darum geht, welche Formularfelder die automatische Vervollständigung deaktivieren sollen und welche nicht.

Quelle
Translate

Drei Optionen: Erstens:

<input type='text' autocomplete='off' />

Zweite:

<form action='' autocomplete='off'>

Drittens (Javascript-Code):

$('input').attr('autocomplete', 'off');
Quelle
Translate

Ich habe den endlosen Kampf mit Google Chrome mit zufälligen Zeichen gelöst. Wenn Sie die automatische Vervollständigung immer mit einer zufälligen Zeichenfolge rendern, wird sie sich nie an etwas erinnern.

<input name="name" type="text" autocomplete="rutjfkde">

Hoffe, dass es anderen Menschen helfen wird.

Quelle
Translate

Auf eine verwandte oder tatsächlich auf die völlig entgegengesetzte Note -

"Wenn Sie der Benutzer des oben genannten Formulars sind und die Autovervollständigungsfunktion wieder aktivieren möchten, verwenden Sie das Lesezeichen" Kennwort speichern "Lesezeichen Seite. Es entfernt allesautocomplete="off"Attribute aus allen Formularen auf der Seite. Kämpfe weiter gegen den guten Kampf! "

Quelle
Translate

Wir haben tatsächlich verwendetsasbIdee für eine Seite. Es war eine medizinische Software-Web-App, um eine Arztpraxis zu betreiben. Viele unserer Kunden waren jedoch Chirurgen, die viele verschiedene Arbeitsplätze nutzten, einschließlich halböffentlicher Terminals. Sie wollten daher sicherstellen, dass ein Arzt, der die Auswirkungen automatisch gespeicherter Passwörter nicht versteht oder nicht aufpasst, seine Anmeldeinformationen nicht versehentlich leicht zugänglich macht. Dies war natürlich vor der Idee des privaten Browsings, das in IE8, FF3.1 usw. eingeführt wird. Trotzdem sind viele Ärzte gezwungen, Browser der alten Schule in Krankenhäusern mit IT zu verwenden, die sich nicht ändern.

Wir haben also die Anmeldeseite zufällige Feldnamen generieren lassen, die nur für diesen Beitrag funktionieren würden. Ja, es ist weniger praktisch, aber es trifft den Benutzer nur über den Kopf, wenn er keine Anmeldeinformationen auf öffentlichen Terminals speichert.

Quelle
Translate

Einfach einstellenautocomplete="off". Dafür gibt es einen sehr guten Grund: Sie möchten Ihre eigene Autocomplete-Funktionalität bereitstellen!

Quelle
Translate

Ich habe endlose Lösungen ausprobiert und dann Folgendes gefunden:

Anstatt vonautocomplete="off"einfach benutzenautocomplete="false"

So einfach ist das und es funktioniert auch in Google Chrome wie ein Zauber!

Quelle
Translate

Meiner Ansicht nachautocomplete=offwird in HTML 5 unterstützt.

Fragen Sie sich, warum Sie dies tun möchten - es kann in einigen Situationen sinnvoll sein, aber tun Sie es nicht nur, um es zu tun.

Es ist weniger bequem für Benutzer und nicht einmal ein Sicherheitsproblem in OS X (von Soren unten erwähnt). Wenn Sie sich Sorgen machen, dass Personen ihre Passwörter aus der Ferne gestohlen haben, kann ein Tastendruck-Logger dies trotzdem tun, obwohl Ihre App dies verwendetautcomplete=off.

Als Benutzer, der sich dafür entscheidet, dass sich ein Browser (die meisten) meiner Informationen merkt, finde ich es ärgerlich, wenn sich Ihre Website nicht an meine erinnert.

Quelle
Translate

Keine der Lösungen hat in diesem Gespräch für mich funktioniert.

Ich habe endlich herausgefunden, areine HTML-LösungDas benötigtkein Javascript, funktioniert in modernen Browsern (außer IE; es musste mindestens 1 Fang geben, oder?) und erfordert nicht, dass Sie die automatische Vervollständigung für das gesamte Formular deaktivieren.

Schalten Sie einfach die automatische Vervollständigung auf dem ausformund dann für jeden einschalteninputSie möchten, dass es innerhalb des Formulars funktioniert. Zum Beispiel:

<form autocomplete="off">
    <!-- these inputs will not allow autocomplete and chrome 
         won't highlight them yellow! -->
    <input name="username"  />
    <input name="password" type="password" />
    <!-- this field will allow autocomplete to work even 
         though we've disabled it on the form -->
    <input name="another_field" autocomplete="on" />
</form>
Quelle
Translate

Das funktioniert bei mir.

<input name="pass" type="password" autocomplete="new-password" />

Wir können diese Strategie auch in anderen Steuerelementen wie Text, Auswahl usw. Verwenden

Quelle
Translate

Ein bisschen spät zum Spiel ... aber ich bin gerade auf dieses Problem gestoßen und habe mehrere Fehler versucht, aber dieser funktioniert für mich gefunden aufMDN

In einigen Fällen schlägt der Browser weiterhin Werte für die automatische Vervollständigung vor, auch wenn das Attribut für die automatische Vervollständigung deaktiviert ist. Dieses unerwartete Verhalten kann für Entwickler ziemlich rätselhaft sein. Der Trick, um die Nichtvervollständigung wirklich zu erzwingen, besteht darin, dem Attribut eine zufällige Zeichenfolge wie folgt zuzuweisen:

autocomplete="nope"
Quelle
Translate

Die beste Lösung:

Verhindern Sie den automatischen Vervollständigungsbenutzernamen (oder die E-Mail-Adresse) und das Kennwort:

<input type="email" name="email"><!-- Can be type="text" -->
<input type="password" name="password" autocomplete="new-password">

Verhindern Sie die automatische Vervollständigung eines Felds:

<input type="text" name="field" autocomplete="nope">

Erläuterung:autocompletesetzt die Arbeit in fort<input>, autocomplete="off"funktioniert nicht, aber Sie können ändernoffzu einer zufälligen Zeichenfolge, wienope.

Arbeitet in:

  • Chrom: 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 und 64

  • Firefox: 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 und 58

Quelle
Translate

Versuchen Sie hinzuzufügen

readonly onfocus = "this.removeAttribute ('readonly');"

zusätzlich zu

autocomplete = "aus"

zu den Eingaben, an die Sie sich keine Formulardaten erinnern möchten (username, passwordusw.) wie unten gezeigt:

<input type="text" name="UserName" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" >

<input type="password" name="Password" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" >


Aktualisieren:Hier ist ein vollständiges Beispiel, das auf diesem Ansatz basiert, der dies verhindertziehen und loslassen, Kopieren, Einfügen, usw.

<input type="text" name="UserName" style="text-transform:lowercase;" placeholder="Username" 
    autocomplete="off" readonly onfocus="this.removeAttribute('readonly');" 
    oncopy="return false" ondrag="return false" ondrop="return false" 
    onpaste="return false" oncontextmenu="return false" > 

<input type="password" name="Password" placeholder="Password" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" oncopy="return false" ondrag="return false" 
    ondrop="return false" onpaste="return false" oncontextmenu="return false" >

Getestet auf den neuesten Versionen der wichtigsten Browser, dhGoogle Chrome, Mozilla Firefox, Microsoft Edgeusw. und ohne Probleme arbeiten. Hoffe das hilft...

Quelle
Translate

Hinzufügen der

autocomplete="off"

Wenn Sie das Formular-Tag verwenden, wird die automatische Vervollständigung des Browsers (was zuvor in dieses Feld eingegeben wurde) für alle deaktiviertinputFelder innerhalb dieser bestimmten Form.

Getestet am:

  • Firefox 3.5, 4 BETA
  • Internet Explorer 8
  • Chrom
Quelle
Translate

Verwenden Sie für die Felder einen nicht standardmäßigen Namen und eine ID, sodass "name_" anstelle von "name" "name_" hat. Browser sehen es dann nicht als Namensfeld. Das Beste daran ist, dass Sie dies für einige, aber nicht alle Felder tun können und einige, aber nicht alle Felder automatisch vervollständigen.

Quelle
Translate

Um das ungültige XHTML zu vermeiden, können Sie dieses Attribut mit Javascript festlegen. Beispiel mit jQuery:

<input type="text" class="noAutoComplete" ... />

$(function() {
    $('.noAutoComplete').attr('autocomplete', 'off');
});

Das Problem ist, dass Benutzer ohne Javascript die Autocomplete-Funktionalität erhalten.

Quelle
Translate

Hinzufügenautocomplete="off"wird es nicht schneiden.

Ändern Sie das Eingabetypattribut intype="search".
Google wendet keine automatische Füllung auf Eingaben mit einer Art von Suche an.

Quelle
Translate

versuchen Sie diese auch, wenn nurautocomplete="off"funktioniert nicht:

autocorrect="off" autocapitalize="off" autocomplete="off"
Quelle
Ben
Translate

Ich kann nicht glauben, dass dies noch so lange nach der Meldung ein Problem ist. Die oben genannten Lösungen haben bei mir nicht funktioniert, da Safari zu wissen schien, wann das Element nicht angezeigt oder außerhalb des Bildschirms angezeigt wurde. Für mich hat jedoch Folgendes funktioniert:

<div style="height:0px; overflow:hidden; ">
  Username <input type="text" name="fake_safari_username" >
  Password <input type="password" name="fake_safari_password">
</div>

Hoffe das ist nützlich für jemanden!

Quelle
Translate

Dies ist ein Sicherheitsproblem, das Browser jetzt ignorieren. Browser identifizieren und speichern Inhalte anhand von Eingabenamen, auch wenn Entwickler der Ansicht sind, dass die Informationen vertraulich sind und nicht gespeichert werden sollten. Wenn Sie einen Eingabenamen zwischen zwei Anforderungen unterscheiden, wird das Problem behoben (wird jedoch weiterhin im Cache des Browsers gespeichert und der Cache des Browsers wird vergrößert). Bitten Sie den Benutzer, Optionen in den Einstellungen seines Browsers zu aktivieren oder zu deaktivieren. Dies ist keine gute Lösung. Das Problem kann im Backend behoben werden.

Hier ist mein Fix. Ein Ansatz, den ich in meinem Framework implementiert habe. Alle Autocomplete-Elemente werden mit einer versteckten Eingabe wie folgt generiert:

<? $r = rmd5(rand().mocrotime(TRUE)); ?>
<form method="POST" action="./">
    <input type="text" name="<? echo $r; ?>" />
    <input type="hidden" name="__autocomplete_fix_<? echo $r; ?>" value="username" />
    <input type="submit" name="submit" value="submit" />
</form>

Der Server verarbeitet dann Post-Variablen wie folgt:

foreach ($_POST as $key => $val)
{
    if(preg_match('#^__autocomplete_fix_#', $key) === 1){
        $n = substr($key, 19);
        if(isset($_POST[$n]))$_POST[$val] = $_POST[$n];
    }
}

Auf den Wert kann wie gewohnt zugegriffen werden

var_dump($_POST['username']);

Und der Browser kann keine Informationen aus der vorherigen Anfrage oder von früheren Benutzern vorschlagen.

Alles funktioniert wie ein Zauber, auch wenn Browser-Updates die automatische Vervollständigung ignorieren möchten oder nicht. Das war der beste Weg, um das Problem für mich zu beheben.

Quelle
Translate

Keiner der hier genannten Hacks hat in Chrome für mich funktioniert. Hier wird das Thema diskutiert:https://code.google.com/p/chromium/issues/detail?id=468153#c41

Hinzufügen in a<form>funktioniert (zumindest vorerst):

<div style="display: none;">
    <input type="text" id="PreventChromeAutocomplete" name="PreventChromeAutocomplete" autocomplete="address-level4" />
</div>
Quelle
Translate

Also hier ist es:

function turnOnPasswordStyle() {
  $('#inputpassword').attr('type', "password");
}
<input oninput="turnOnPasswordStyle()" id="inputpassword" type="text">
Quelle
Translate

Sie können in der Eingabe verwenden.

Zum Beispiel;

<input type=text name="test" autocomplete="off" />
Quelle