Eine der Freuden bei der Arbeit für eine staatliche Gesundheitsbehörde ist es, mit all der Paranoia im Umgang mit PHI (Protected Health Information) fertig zu werden. Versteh mich nicht falsch, ich bin alles dafür, alles zu tun, um die persönlichen Daten der Menschen (Gesundheit, Finanzen, Surfgewohnheiten usw.) zu schützen, aber manchmal werden die Leute etwas zu nervös.
Ein typisches Beispiel: Einer unserer staatlichen Kunden hat kürzlich herausgefunden, dass der Browser die praktische Funktion zum Speichern Ihres Passworts bietet. Wir alle wissen, dass es schon eine Weile da ist und völlig optional ist und es dem Endbenutzer überlassen bleibt, zu entscheiden, ob es eine kluge Entscheidung ist, es zu verwenden oder nicht. Im Moment herrscht jedoch ein gewisser Aufruhr, und wir werden aufgefordert, einen Weg zu finden, um diese Funktionalität für unsere Website zu deaktivieren.
Frage : Gibt es eine Möglichkeit für eine Website, den Browser anzuweisen, keine Passwörter zu speichern? Ich habe mich schon lange mit Webentwicklung beschäftigt, weiß aber nicht, dass ich darauf schon einmal gestoßen bin.
Jede Hilfe wird geschätzt.
quelle
Antworten:
Ich bin nicht sicher, ob es in allen Browsern funktioniert, aber Sie sollten versuchen, autocomplete = "off" im Formular zu setzen.
Einige kleinere Untersuchungen zeigen, dass dies im IE funktioniert, aber ich werde keine Garantien hinterlassen;)
@Joseph : Wenn es eine strikte Anforderung ist, die XHTML-Validierung mit dem tatsächlichen Markup zu bestehen (ich weiß nicht, warum das so ist), können Sie dieses Attribut theoretisch später mit Javascript hinzufügen, aber dann Benutzer mit deaktiviertem js (wahrscheinlich eine vernachlässigbare Menge Ihrer Benutzerbasis) oder Null, wenn Ihre Site js benötigt) werden ihre Passwörter weiterhin gespeichert.
Beispiel mit jQuery:
quelle
autocomplete="off"
fürinput type="password"
Felder. msdn.microsoft.com/en-us/library/ie/ms533486%28v=vs.85%29.aspxfür die Eingaben, an die sie sich keine Formulardaten ( usw.) erinnern
username
sollenpassword
, wie unten gezeigt:Getestet auf die neuesten Versionen der gängigen Browser , dh
Google Chrome
,Mozilla Firefox
,Microsoft Edge
etc. und funktioniert wie ein Zauber. Hoffe das hilft.quelle
Ich hatte eine Weile mit diesem Problem zu kämpfen, mit einer einzigartigen Wendung des Problems. Privilegierte Benutzer konnten die gespeicherten Passwörter nicht für sie verwenden, aber normale Benutzer benötigten sie. Dies bedeutete, dass sich privilegierte Benutzer zweimal anmelden mussten, das zweite Mal, dass keine gespeicherten Passwörter erzwungen wurden.
Mit dieser Anforderung
autocomplete="off"
funktioniert die Standardmethode nicht in allen Browsern, da das Kennwort möglicherweise beim ersten Anmelden gespeichert wurde. Ein Kollege hat eine Lösung gefunden, um das Kennwortfeld zu ersetzen, wenn es durch ein neues Kennwortfeld fokussiert wurde, und sich dann auf das neue Kennwortfeld zu konzentrieren (und dann denselben Ereignishandler anzuschließen). Dies funktionierte (außer es verursachte eine Endlosschleife in IE6). Vielleicht gab es einen Ausweg, aber es verursachte mir eine Migräne.Schließlich habe ich versucht, nur den Benutzernamen und das Passwort außerhalb des Formulars zu haben. Zu meiner Überraschung hat das funktioniert! Es funktionierte unter IE6 und aktuellen Versionen von Firefox und Chrome unter Linux. Ich habe es nicht weiter getestet, aber ich vermute, dass es in den meisten, wenn nicht allen Browsern funktioniert (aber es würde mich nicht überraschen, wenn es einen Browser gäbe, dem es egal wäre, wenn es kein Formular gäbe).
Hier ist ein Beispielcode zusammen mit jQuery, damit es funktioniert:
quelle
Nun, es ist ein sehr alter Beitrag, aber ich werde trotzdem meine Lösung geben, die mein Team schon lange zu erreichen versucht hatte. Wir haben gerade ein neues Feld für den Eingabetyp = "Passwort" in das Formular eingefügt und es in div eingeschlossen und das div ausgeblendet. Stellen Sie sicher, dass dieses div vor der eigentlichen Passworteingabe steht. Dies funktionierte für uns und es gab keine Option zum Speichern des Passworts
Plunk - http://plnkr.co/edit/xmBR31NQMUgUhYHBiZSg?p=preview
HTML:
CSS:
quelle
Sie können verhindern, dass der Browser mit den Formularen übereinstimmt, indem Sie den Namen, der für das Kennwortfeld in jeder Show verwendet wird, zufällig auswählen. Dann sieht der Browser ein Passwort für dieselbe URL, kann jedoch nicht sicher sein, ob es dasselbe Passwort ist . Vielleicht kontrolliert es etwas anderes.
Update: Beachten Sie, dass dies zusätzlich zur Verwendung der automatischen Vervollständigung oder anderer Taktiken und nicht als Ersatz für diese aus den von anderen angegebenen Gründen erfolgen sollte.
Beachten Sie auch, dass dies nur verhindert, dass der Browser das Kennwort automatisch vervollständigt . Es wird nicht verhindert, dass das Kennwort in einer beliebigen willkürlichen Sicherheitsstufe gespeichert wird, die der Browser verwendet.
quelle
Verwenden Sie eine echte Zwei-Faktor-Authentifizierung , um die alleinige Abhängigkeit von Kennwörtern zu vermeiden, die möglicherweise an viel mehr Orten als im Browser-Cache des Benutzers gespeichert sind.
quelle
Der sauberste Weg ist die Verwendung des
autocomplete="off"
Tag-Attributs, aber Firefox befolgt es nicht richtig, wenn Sie Felder mit Tab wechseln.Die einzige Möglichkeit, dies zu stoppen, besteht darin, ein falsches verstecktes Kennwortfeld hinzuzufügen, das den Browser dazu verleitet, das Kennwort dort aufzufüllen.
Es ist ein hässlicher Hack, weil Sie das Browserverhalten ändern, was als schlechte Praxis angesehen werden sollte. Verwenden Sie es nur, wenn Sie es wirklich brauchen.
Hinweis: Dadurch wird das automatische Ausfüllen von Kennwörtern effektiv gestoppt, da FF den Wert von
#prevent_autofill
(der leer ist) "speichert" und versucht, alle gespeicherten Kennwörter dort aufzufüllen, da immer die erstetype="password"
Eingabe verwendet wird, die im DOM nach dem jeweiligen "Benutzernamen" gefunden wird. Eingang.quelle
Ich habe getestet, dass das Hinzufügen von autocomplete = "off" im Formular-Tag in allen gängigen Browsern erfolgt. Tatsächlich verwenden die meisten Menschen in den USA bisher IE8.
Aktualisiert am 11. Juni 2014
Im Folgenden finden Sie eine browserübergreifende Lösung mit Javascript, die in allen Browsern einwandfrei funktioniert.
Das "Formular" -Tag muss im Anmeldeformular entfernt werden. Legen Sie diese Anmeldeinformationen nach der clientseitigen Überprüfung in versteckter Form ab und senden Sie sie ab.
Fügen Sie außerdem zwei Methoden hinzu. eine zur Validierung "validateLogin ()" und eine andere zum Abhören des Enter-Ereignisses, während Sie in das Textfeld / Passwort / die Schaltfläche "checkAndSubmit ()" auf "Enter" klicken. Da das Anmeldeformular jetzt kein Formular-Tag hat, geben Sie hier ein Ereignis ein, das nicht funktioniert.
HTML
Javascript
Viel Glück!!!
quelle
Nicht wirklich - das einzige, was Sie realistisch tun können, ist, auf der Website Ratschläge zu geben. Möglicherweise können Sie ihnen vor der ersten Anmeldung ein Formular mit Informationen anzeigen, aus denen hervorgeht, dass nicht empfohlen wird, dass der Browser das Kennwort speichert.
Dann folgt der Benutzer sofort dem Rat, schreibt das Passwort auf eine Haftnotiz und klebt es auf seinen Monitor.
quelle
Was ich getan habe, ist eine Kombination aus Autocomplete = "off" und Löschen von Passwortfeldern mit einem Javascript / jQuery.
jQuery Beispiel:
Wenn
setTimeout()
Sie verwenden, können Sie warten, bis der Browser das Feld ausgefüllt hat, bevor Sie es löschen. Andernfalls wird der Browser nach dem Löschen des Felds immer automatisch vervollständigt.quelle
Wenn autocomplete = "off" nicht funktioniert ... entfernen Sie das Formular-Tag und verwenden Sie stattdessen ein div-Tag. Übergeben Sie dann die Formularwerte mit jquery an den Server. Das hat bei mir funktioniert.
quelle
Da autocomplete = "off" für Kennwortfelder nicht funktioniert, muss man sich auf Javascript verlassen. Hier ist eine einfache Lösung, die auf den hier gefundenen Antworten basiert.
Fügen Sie Ihrem Passwortfeld das Attribut data-password-autocomplete = "off" hinzu:
Schließen Sie das folgende JS ein:
Diese Lösung funktioniert sowohl für Chrome als auch für FF.
quelle
Nur damit die Leute erkennen, dass das Attribut "Autocomplete" die meiste Zeit funktioniert, aber Power-User können es mithilfe eines Lesezeichens umgehen.
Wenn ein Browser Ihre Passwörter speichert, erhöht sich der Schutz vor Keylogging. Daher ist es möglicherweise am sichersten, Passwörter im Browser zu speichern, sie jedoch mit einem Hauptkennwort zu schützen (zumindest in Firefox).
quelle
Ich habe eine Lösung, die helfen kann.
Sie könnten einen benutzerdefinierten Font-Hack durchführen. Erstellen Sie also eine benutzerdefinierte Schriftart, bei der alle Zeichen beispielsweise als Punkt / Kreis / Stern angezeigt werden. Verwenden Sie dies als benutzerdefinierte Schriftart für Ihre Website. Überprüfen Sie, wie Sie dies in inkscape tun: So erstellen Sie Ihre eigene Schriftart
Verwenden Sie dann in Ihrem Anmeldeformular:
Dann fügen Sie Ihre CSS hinzu:
Ziemlich browserübergreifend kompatibel. Ich habe IE6 +, FF, Safari und Chrome ausprobiert. Stellen Sie einfach sicher, dass die von Ihnen konvertierte OET-Schriftart nicht beschädigt wird. Ich hoffe es hilft?
quelle
Die einfachste Möglichkeit, dieses Problem zu lösen, besteht darin, INPUT-Felder außerhalb des FORM-Tags zu platzieren und zwei ausgeblendete Felder innerhalb des FORM-Tags hinzuzufügen. Dann in einem Submit-Ereignis-Listener, bevor die Formulardaten an den Server gesendet werden, kopieren Sie die Werte von der sichtbaren Eingabe in die unsichtbaren.
Hier ist ein Beispiel (Sie können es hier nicht ausführen, da die Formularaktion nicht auf ein echtes Anmeldeskript festgelegt ist):
quelle
Meine Problemumgehung für js (jquery) besteht darin , den Typ der Passworteingabe in Text auf dem Formular zu ändern . Das Passwort könnte für eine Sekunde sichtbar werden, daher verstecke ich auch die Eingabe kurz davor. Ich würde dies lieber nicht für Anmeldeformulare verwenden , aber es ist nützlich (zusammen mit autocomplete = "off"), zum Beispiel innerhalb des Verwaltungsteils der Website.
Versuchen Sie, dies in eine Konsole (mit jquery) zu stellen, bevor Sie das Formular senden.
Getestet auf Chrome 44.0.2403.157 (64-Bit).
quelle
Ich habe viele Lösungen getestet. Name des dynamischen Kennwortfelds, mehrere Kennwortfelder (für gefälschte nicht sichtbar), Änderung des Eingabetyps von "Text" in "Kennwort", automatische Vervollständigung = "Aus", automatische Vervollständigung = "Neues Kennwort", ... aber nichts hat es mit den letzten gelöst Browser.
Um das Passwort loszuwerden, habe ich das Passwort schließlich als Eingabefeld behandelt und den eingegebenen Text "verwischt".
Es ist weniger "sicher" als ein natives Kennwortfeld, da durch Auswahl des eingegebenen Textes dieser als Klartext angezeigt wird, das Kennwort jedoch nicht gespeichert wird. Es hängt auch davon ab, ob Javascript aktiviert ist.
Sie haben das Risiko geschätzt, die unten stehende Option zum Speichern des Kennworts im Navigator zu verwenden.
Während das Speichern von Passwörtern vom Benutzer verwaltet (pro Site deaktiviert) werden kann, ist dies für einen Personal Computer in Ordnung, nicht für einen "öffentlichen" oder gemeinsam genutzten Computer.
In meinem Fall handelt es sich um ein ERP, das auf gemeinsam genutzten Computern ausgeführt wird. Daher werde ich meine unten stehende Lösung ausprobieren.
quelle
Markus hat einen tollen Punkt angesprochen. Ich habe mich entschlossen, das
autocomplete
Attribut nachzuschlagen und habe Folgendes erhalten:Ich muss also sagen, dass es zwar nicht zu 100% auf der ganzen Linie funktioniert, aber in den wichtigsten Browsern verarbeitet wird, sodass es eine großartige Lösung ist.
quelle
Ich habe oben versucht
autocomplete="off"
und doch alles erfolgreich. Wenn Sie eckige js verwenden, empfehle ich, mit der Schaltfläche und dem ng-Klick zu gehen.Dies hat bereits eine akzeptierte Antwort. Ich füge diese hinzu, wenn jemand das Problem mit der akzeptierten Antwort nicht lösen kann, kann er mit meinem Mechanismus gehen.
Danke für die Frage und die Antworten.
quelle
enter
oder abreturn
, um ein Formular zu senden.Eine Möglichkeit, die ich kenne, besteht darin, (zum Beispiel) JavaScript zu verwenden, um den Wert aus dem Kennwortfeld zu kopieren, bevor das Formular gesendet wird.
Das Hauptproblem dabei ist, dass die Lösung an JavaScript gebunden ist.
Wenn es mit JavaScript verknüpft werden kann, können Sie das Kennwort auch auf der Clientseite hashen, bevor Sie eine Anforderung an den Server senden.
quelle
Das eigentliche Problem ist viel tiefer als nur das Hinzufügen von Attributen zu Ihrem HTML-Code - dies ist ein häufiges Sicherheitsrisiko. Deshalb haben die Leute Hardwareschlüssel und andere verrückte Dinge für die Sicherheit erfunden.
Stellen Sie sich vor, Sie haben Autocomplete = "off", das in allen Browsern einwandfrei funktioniert. Würde das bei der Sicherheit helfen? Natürlich nicht. Benutzer notieren ihre Passwörter in Lehrbüchern auf Aufklebern auf ihrem Monitor, auf denen jeder Bürobesucher sie sehen kann, speichern sie in Textdateien auf dem Desktop und so weiter.
Im Allgemeinen sind Webanwendungen und Webentwickler in keiner Weise für die Sicherheit der Endbenutzer verantwortlich. Endbenutzer können sich nur selbst schützen. Im Idealfall MÜSSEN sie alle Passwörter im Kopf behalten und die Funktion zum Zurücksetzen von Passwörtern (oder den Administrator kontaktieren) verwenden, falls sie diese vergessen haben. Andernfalls besteht immer die Gefahr, dass das Passwort irgendwie gesehen und gestohlen wird.
Entweder haben Sie eine verrückte Sicherheitsrichtlinie mit Hardwareschlüsseln (wie einige Banken das Internet-Banking anbieten, bei dem im Grunde eine Zwei-Faktor-Authentifizierung verwendet wird) oder KEINE SICHERHEIT. Nun, das ist natürlich etwas übertrieben. Es ist wichtig zu verstehen, wovor Sie sich schützen möchten:
In diesem speziellen Beitrag sehe ich unzureichende Anforderungen an den Entwickler, die er aufgrund der Art des Problems - der Sicherheit der Endbenutzer - niemals lösen kann. Mein subjektiver Punkt ist, dass Entwickler grundsätzlich NEIN sagen und auf Anforderungsprobleme hinweisen sollten, anstatt ehrlich Zeit für solche Aufgaben zu verschwenden. Dies macht Ihr System nicht unbedingt sicherer, sondern führt eher zu Fällen mit Aufklebern auf Monitoren. Leider hören einige Chefs nur das, was sie hören wollen. Wenn ich Sie wäre, würde ich versuchen zu erklären, woher das eigentliche Problem kommt, und dass Autocomplete = "off" es nicht lösen würde, es sei denn, es zwingt Benutzer, alle ihre Passwörter ausschließlich im Kopf zu behalten! Entwickler seinerseits können Benutzer nicht vollständig schützen,
quelle
Angesichts des gleichen HIPAA-Problems und fand eine relativ einfache Lösung,
Erstellen Sie ein verstecktes Kennwortfeld mit dem Feldnamen als Array.
Verwenden Sie dasselbe Array für das eigentliche Kennwortfeld.
Der Browser (Chrome) fordert Sie möglicherweise zur Eingabe von "Kennwort speichern" auf. Unabhängig davon, ob der Benutzer "Speichern" auswählt, wird beim nächsten Anmelden des Kennworts das versteckte Kennwortfeld, der Null-Steckplatz im Array, automatisch ausgefüllt, wobei der erste Steckplatz leer bleibt.
Ich habe versucht, das Array zu definieren, z. B. "password [part2]", aber es wurde immer noch gespeichert. Ich denke, es wirft es ab, wenn es ein nicht indiziertes Array ist, weil es keine andere Wahl hat, als es an der ersten Stelle abzulegen.
Dann verwenden Sie die Programmiersprache Ihrer Wahl, um auf das Array zuzugreifen, z. B. PHP.
quelle
Da die meisten
autocomplete
Vorschläge, einschließlich der akzeptierten Antwort, in den heutigen Webbrowsern nicht funktionieren (dh Webbrowser-Passwortmanager ignorierenautocomplete
), besteht eine neuere Lösung darin, zwischenpassword
undtext
Typen zu wechseln und die Hintergrundfarbe mit der Textfarbe im Feld abzustimmen ist ein einfaches Textfeld, das das Kennwort weiterhin verbirgt, während es ein echtes Kennwortfeld ist, wenn der Benutzer (oder ein Programm wie KeePass) ein Kennwort eingibt. Browser fordern nicht zum Speichern von Passwörtern auf, die in Klartextfeldern gespeichert sind.Der Vorteil dieses Ansatzes besteht darin, dass eine schrittweise Verbesserung möglich ist und daher kein Javascript erforderlich ist, damit ein Feld als normales Kennwortfeld fungiert (Sie können stattdessen auch mit einem einfachen Textfeld beginnen und denselben Ansatz anwenden, dies ist jedoch nicht wirklich HIPAA PHI / PII-konform). Dieser Ansatz hängt auch nicht von versteckten Formularen / Feldern ab, die möglicherweise nicht unbedingt an den Server gesendet werden (weil sie versteckt sind), und einige dieser Tricks funktionieren auch in mehreren modernen Browsern nicht.
jQuery-Plugin:
https://github.com/cubiclesoft/php-flexforms-modules/blob/master/password-manager/jquery.stoppasswordmanager.js
Relevanter Quellcode über den obigen Link:
Demo:
https://barebonescms.com/demos/admin_pack/admin.php
Klicken Sie im Menü auf "Eintrag hinzufügen" und scrollen Sie zum Ende der Seite zu "Modul: Kennwort-Manager stoppen".
Haftungsausschluss: Während dieser Ansatz für sehende Personen funktioniert, kann es zu Problemen mit der Bildschirmlese-Software kommen. Beispielsweise kann ein Bildschirmleser das Kennwort des Benutzers laut vorlesen, da ein einfaches Textfeld angezeigt wird. Die Verwendung des oben genannten Plugins kann auch andere unvorhergesehene Folgen haben. Das Ändern der integrierten Webbrowser-Funktionalität sollte sparsam erfolgen, indem eine Vielzahl von Bedingungen und Randfällen getestet werden.
quelle
Die Website teilt dem Browser mit, dass es sich um ein Passwort handelt
<input type="password">
. Wenn Sie dies aus Sicht der Website tun müssen, müssen Sie dies ändern. (Natürlich empfehle ich das nicht).Die beste Lösung wäre, den Benutzer seinen Browser so konfigurieren zu lassen, dass er sich keine Passwörter merkt.
quelle
Wenn Sie dem Flag für die automatische Vervollständigung nicht vertrauen möchten, können Sie mithilfe des Ereignisses onchange sicherstellen, dass der Benutzer das Feld eingibt. Der folgende Code ist ein einfaches HTML-Formular. Das ausgeblendete Formularelement password_edited wird zunächst auf 0 gesetzt. Wenn der Wert des Kennworts geändert wird, ändert das JavaScript oben (Funktion pw_edited) den Wert auf 1. Wenn die Schaltfläche gedrückt wird, wird hier der Code des Wertgebers überprüft, bevor das Formular gesendet wird . Auf diese Weise kann der Benutzer die Anmeldeseite nicht übergeben, selbst wenn der Browser Sie ignoriert und das Feld automatisch vervollständigt, ohne das Kennwortfeld einzugeben. Stellen Sie außerdem sicher, dass das Kennwortfeld leer ist, wenn der Fokus festgelegt ist. Andernfalls können Sie am Ende ein Zeichen hinzufügen und dann zurückgehen und es entfernen, um das System auszutricksen. Ich empfehle zusätzlich das Kennwort autocomplete = "off" zum Kennwort hinzuzufügen, aber dieses Beispiel zeigt, wie der Sicherungscode funktioniert.
quelle
autocomplete = "off" funktioniert nicht zum Deaktivieren des Kennwortmanagers in Firefox 31 und höchstwahrscheinlich auch nicht in einigen früheren Versionen.
Überprüfen Sie die Diskussion bei Mozilla zu diesem Problem: https://bugzilla.mozilla.org/show_bug.cgi?id=956906
Wir wollten ein zweites Passwortfeld verwenden, um ein einmaliges Passwort einzugeben, das von einem Token generiert wurde. Jetzt verwenden wir eine Texteingabe anstelle einer Passworteingabe. :-(
quelle
Ich hatte eine ähnliche Aufgabe, das automatische Ausfüllen von Anmeldenamen und Passwörtern durch den Browser zu deaktivieren. Nach vielen Versuchen und Fehlern fand ich die folgende Lösung optimal. Fügen Sie einfach die folgenden Steuerelemente vor Ihren ursprünglichen Steuerelementen hinzu.
Dies funktioniert gut für IE11 und Chrome 44.0.2403.107
quelle
autocomplete = "off" funktioniert für die meisten modernen Browser, aber eine andere Methode, die ich erfolgreich mit Epiphany (einem WebKit-basierten Browser für GNOME) verwendet habe, besteht darin, ein zufällig generiertes Präfix im Sitzungsstatus (oder ein verstecktes Feld, das ich zufällig hatte) zu speichern eine geeignete Variable bereits im Sitzungsstatus) und ändern Sie damit den Namen der Felder. Epiphany möchte das Kennwort weiterhin speichern, aber wenn Sie zum Formular zurückkehren, werden die Felder nicht ausgefüllt.
quelle
Ich hatte keine Probleme mit dieser Methode:
Verwenden Sie autocomplete = "off", fügen Sie ein verstecktes Kennwortfeld und dann ein weiteres nicht verstecktes hinzu. Der Browser versucht, das versteckte automatisch zu vervollständigen, wenn er autocomplete = "off" nicht berücksichtigt.
quelle
Eine andere Lösung besteht darin, den POST in einer ausgeblendeten Form zu erstellen, in der alle Eingaben vom Typ ausgeblendet sind. Das sichtbare Formular verwendet Eingaben vom Typ "Passwort". Das letztere Formular wird niemals gesendet, sodass der Browser den Anmeldevorgang überhaupt nicht abfangen kann.
quelle