Verhindern, dass Benutzer das finden des Passworts durch Firebug/Chrome Dev Tools
Für die Pass-Eingabefeld:
<input type="text" required="" tabindex="2" class="std_textbox" placeholder="Enter your account password." id="pass" name="pass">
Wenn die <input type="password">
geändert <input type="text">
Das Kennwort offenbart. Dies kann riskant sein in Systemen, die gespeicherte Passwörter oder generiert aus dem Passwort-Manager.
Können client-Seite Verschlüsselung verwendet werden, in hier? Wie kann es umgesetzt werden?
- Ich bin nicht sicher, ob ich verstehe, warum Sie wollen, um zu verhindern, dass ein Benutzer zu sehen sein Passwort, wenn Sie will. Gibt es einen Anwendungsfall, der muss Sie verschlüsseln Sie das Kennwort des Benutzers aus der user selbst?
- Ich möchte die Verschlüsselung von website-end für den browser.
- Aber warum willst du verschlüsseln? Der Benutzer kann Ihr eigenes Passwort, wenn Sie will, kann Sie nicht? Gibt es einen Anwendungsfall, wenn Sie jemanden brauchen würde, um es zu offenbaren, die in eine solche Kerbe, es sei denn zum Spaß?
- Wenn es ein Formular-Ausfüller aktiviert wie Roboform oder das Kennwort ist gespeichert im browser, aufgrund von 'Remember me', jeder Benutzer hat Zugang zu seinem/Ihrem computer kann man das Kennwort leicht.
- Könnte autocomplete=off helfen Ihnen in Ihrer situation?
- Danke für den Vorschlag aber es scheint, wird ignoriert in modernen Browsern: stackoverflow.com/questions/3868299/...
- Vielleicht etwas getan werden kann, in das der Passwort-manager, zu verlangen, dass der Benutzer geben Sie Ihr lokales Kennwort, bevor Sie den browser Holen Sie sich die Webseite Passwort.
- Was hältst du von der Antwort? Wir können diese weiter zu diskutieren, wenn Sie feedback geben können.
- Ich werde warten müssen, bis das Kopfgeld Zeit ist vorbei. Ich brauche ein paar mehr Antworten aus der anderen Perspektive. Vielleicht ist das etwas zu ergänzen.
- Die Punkte sind nur eine grafische Darstellung der Zeichen für ein Passwort-Eingabe, der Wert kann manipuliert werden mit
document.getElementById('pass').value
sowie - Wenn das Formular-Ausfüller oder password manager gibt die Kennwörter an alle, die Zugang zu dem computer hat, dann gibt es nichts - wiederholen, nichts, die Ihre website tun können gegen dieses. Ihre website ist nicht selbst beteiligt, dass Angriffs-Vektor.
- Ich aktualisiert meine Antwort. Die Lösungen hier nicht für Ihren Fall. Und wieder, die meisten Entwickler haben gesagt, dass es, können Sie nicht verhindern. Ich weiß, Sie versuchen hart, und Sie wollen glauben, dass es eine Lösung gibt, aber glauben Sie mir: Es ist nicht mit den Browsern, die wir verwenden.
- Die Antwort ist nicht korrekt, und Sie sollten nicht angenommen haben. Ich habe einen Kommentar Hinzugefügt.
- angenommen, ein Benutzer-manager passiert, um in das system einloggen, ihn zu unterrichten in einer bestimmten Funktion, sich mit seinen (manager) - Anmeldeinformationen. Nun nehme an, Sie sind unterbrochen, in den Prozess, und der manager vergisst weiterhin, verlassen Sie das Fenster geöffnet, wo es war. Dies ist nur ein Beispiel. Stimmt, wir reden hier über Grenzfälle, aber das war eine riesige überraschung für mich, in Bezug auf die Sicherheitslücke, die er anbietet. (Übrigens, dieser kam meines Wissens nach berichtet wird von einem unserer clients.)
- Ich zweifle nicht daran, den Fall verwenden, aber ich bezweifle es ist eine völlig sichere Lösung auf client-Seite
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie gesagt, mit einem Passwort in ein input-element wird, damit der Benutzer leicht zeigen Passwort.
...Und wie @Elyasin fragt, sollten Sie wirklich lassen Sie uns wissen, was dein use-case ist.
In der Dunkelheit über Ihren Anwendungsfall, nehmen wir an, Sie haben eine website, die die Nutzer abonnieren können, um für eine Gebühr, und Sie nicht möchten, dass mehrere Benutzer gemeinsam eine einzige person-login zu bekommen, um die Zahlung Ihrer Abo-Gebühr.
Könnten Sie nutzen die cookie-Authentifizierung, um zu überprüfen, dass ein Benutzer abonniert, um Ihre Website.
Wenn ein neuer Benutzer abonniert, senden Sie eine E-Mail mit einem link zu einer speziellen Anmeldeseite auf Ihrer website.
Wenn der Benutzer folgt diesem link ein cookie auf dem computer des Benutzers angibt, Sie werden ein gültiges Abonnement.
Erstellen Sie eine Zielseite auf Ihrer Website. Diese landing page ist Lesen Sie der cookie vom computer des Benutzers zu authentifizieren, dass Sie tatsächlich ein gültiges Abonnement.
Alle anderen Seiten Ihrer Website, müssen die Benutzer umleiten auf die landing-page, wenn diese Benutzer nicht über die Validierung cookie.
Da un registrierten Benutzer können auf die Zielseite umgeleitet, die Sie bieten könnte, um Ihnen die Abonnenten auf der Startseite.
Wenn ein abonnierter Benutzer das Abonnement abgelaufen ist, nehmen Sie die Cookies aus dem (inzwischen abgemeldete) user ' s computer das nächste mal Sie Ihre Website besuchen. Wie jedes abgemeldete Benutzer, Sie leiten Sie Sie auf der landing-page.
Zwar trifft es zu, dass cookies abgefangen werden kann oder es gestohlen wird, ist es in der Regel jenseits der casual user, die Fähigkeit, dies zu tun.
Wenn Sie wollen mehr Sicherheit die Verwendung von cookies können Sie die Erfassung einer IP-Adresse des Benutzers, wenn Sie zunächst abonnieren. Dann können Sie überprüfen, dass der Benutzer sowohl eine Validierung der cookie und auch der Zugriff auf von der gleichen IP-Adresse, die Sie ursprünglich abonnieren aus. Natürlich, schränkt dies das abonnieren mit nur Ihre ursprüngliche IP-Adresse um auf Ihre Website zuzugreifen.
Kurze Antwort: Es kann nicht verhindert werden, leider. Dies ist, da alle client-side code (JavaScript) änderbar ist durch den Kunden selbst - also eine client-basierte Sicherheit system anfällig.
Die einzige praktikable Lösung, die ich mir vorstellen kann, ist zum speichern einer Hash - Darstellung der Kennwort anstelle der raw-Passwort. Dies wird (wenn man davon absieht hash-bruteforce-Angriffe) zu halten, die roh-Passwort sicher auf.
Ein hash ist eine Vertretung des ursprünglichen Textes, und ist nicht umkehrbar. Das heißt, die ursprüngliche Zeichenfolge nicht abgerufen werden können, die von jedem Algorithmus, nur den hash. Beispiele für hash mit MD5 und SHA. Diese Technik wird Häufig verwendet in Routern, wo das Passwort oft im browser gespeichert wird.
Klärung: speichern Sie Niemals Ihre Passwörter in plain-text, und wenn Sie möchten, übernehmen diese Technik, die von pre-entered password; die Vermischung und/oder Verschlüsselung auftreten muss auf der server-Seite.
Sah ich Lösungen in verschiedenen Antworten. In allen von Ihnen, es ist nur schwieriger, um das Passwort zu sehen, aber es nicht verhindern, dass jemand es zu sehen.
Konnte ich nicht denken, dass ein use-case, aber Sie erwähnt der automatischen form Füller - und die Erinnern mich option.
Der automatischen form Füller -, soweit ich weiß, sind master-Passwort geschützt. Sie sein sollten; ich würde nicht verwenden, wenn ich konnte nicht schalten Sie ihn auf on oder off sicher. In diesem Fall ist es meine Aufgabe, Abmelden, Wann immer ich bin in der Lage einen computer gemeinsam.
Erinnern mich option, so oft, gefördert von web sites, Sie sollten nur verwendet werden, wenn es Ihren persönlichen computer und Sie nicht erwarten, zu teilen Sie Ihrem Gerät mit einer anderen person. Nicht verwenden oder sicherstellen, dass niemand anderes verwendet Ihr Benutzerkonto. Wieder, es liegt in Ihrer Verantwortung.
Nun, sehen Sie noch eine Notwendigkeit, um zu verhindern, dass solche Angriff. Alle, die ich mit oben kommen kann ist die folgende:
Könnte helfen, dass Sie sich in das folgende Szenario: Halten Sie das Passwort immer verschlüsselt. Sie sollten immer übereinstimmen. Allerdings, wenn der Benutzer möchte sein Passwort ändern, es wird Klartext. Der Benutzer kann nicht geben Sie es in einer verschlüsselten form. Sie haben zu lösen. Gibt es Lösungen. Ich bin sicher, dass Sie bekommen, dass.
Dies könnte helfen, Sie in das folgende Szenario: Der server sendet nur die verschlüsselte version. Dieser Weise kein Angreifer können diese Informationen verwenden. Sie müssen es entsprechend, aber ich stellen Sie sich vor, das herauszufinden zu.
Lassen Sie mich erklären, warum. Sie wollen verhindern, dass ein Angreifer zu sehen, das Kennwort sollte ein Benutzer merkt sich die Passwörter oder nutzt eine automatische form filler. Naja, wenn ein Angreifer Zugriff auf den computer eines Benutzers, er wäre in der Lage, melden Sie sich einfach, warum die Mühe das Passwort zu sehen bekommt?
Wenn Sie verwenden können, tun Sie es. Es löst nicht das Problem vollständig, aber Sie können erwarten, um die Sicherheit zu erhöhen. Insbesondere ist es schwieriger für einen Angreifer.
Als es ist clientseitiger, es gibt keine wirkliche Möglichkeit, dies zu verhindern. In Bezug auf eine Sicherheits-Modell: wir können nicht das Vertrauen der Kunden. Auf der anderen Seite jedoch, gibt es keine echte Möglichkeit zu implementieren, das auf andere Weise ohne die Verwendung einer Drittanbieter-Gerät.
Wenn du bist bereit zu gehen durch die Mühe, mit einem Dritten Gerät unterstützen bei der Authentifizierung: die Webseite generieren und zeigen eine Zufallsverteilung, habe das Gerät von Fragen, für die Saat und das Passwort zu generieren, einen hash, und authentifizieren Sie sich auf der Website mit dem hash. Natürlich, der hash wird immer noch sichtbar sein, wenn Sie über einen web-debugger, aber zumindest gibt es keinen Punkt in das speichern/Lesen als hash unterscheiden sich für jede Sitzung. Dies ist nicht völlig sicher, entweder, durch die Art und Weise, wie diese Methode ist anfällig für chosen-plaintext-Angriff.
Lob, wenn Sie bereit sind zu gehen durch alle diese Schwierigkeiten aber. Ich nehme an, Sie könnten schreiben eine app für dies, eine smartphone-Funktion als Dritten Gerät.
Absolut nicht. Sie können nicht verhindern, dass die end-Benutzer zu manipulieren, die DOM von Developer tools oder firebug.
ich glaube, das Problem, das Sie konfrontiert sind, ist für mehrere Personen denselben computer verwenden, und wenn ein Benutzer speichert Ihr Passwort auf Ihrer Website, dann jeder andere auch, die Besuche der Website auf dem gleichen pc wird in der Lage sein, zu manipulieren, um das Feld zu zeigen das Passwort.
Eine Möglichkeit, dies zu verhindern, ist das deaktivieren der auto-complete.
autocomplete="off"
Platzieren Sie diesen code in das input-element und selbst wenn das Kennwort gespeichert wird, sollte es nicht zu zeigen.<input autocomplete="off" type="text" required="" tabindex="2" class="std_textbox" placeholder="Enter your account password." id="pass" name="pass">
Profis
Sie haben keine sorgen zu machen über Benutzer, Computer und Passwörter offenbart für die meisten Teil.
Nachteile
Benutzer können denken, dass Ihre Kennwörter gespeichert werden (und Sie können immer noch Passwörter speichern), aber wenn Sie kommen, um Ihre Website, wird es nicht zeigen, bis.
HINWEIS Dies ist nicht der volle Beweis Weg, zu verhindern, dass Benutzer form der Manipulation der form und abrufen von anderen Benutzern Passwörter.
Als Seite beachten, wenn die Website nicht aktualisieren, nach Eingabe von Passwort und Benutzer-Namen der web-browser wird nicht Fragen, um das Passwort zu speichern. Zum Beispiel über eine ajax-Aufruf anstelle von Formular Absenden.
Können Sie JavaScript verwenden, so löschen Sie den text in das Feld Kennwort ein, wenn die Seite geladen wird. Ein besserer Stil wäre das hinzufügen der Feld beim laden der Seite mit JavaScript, in etwa so:var x = document.createElement("INPUT"); x.setAttribute("type", "Passwort");
Alternative zu der autocomplete="off" AutoVervollständigen alternative Es beinhaltet zunächst einen Namen aus dem backend und wie es mit den Namen der Felder, so dass die autocomplete wird nie wissen, wohin Ihre Nutzer gespeicherten Daten
autocomplete=off
scheint, um ignoriert zu werden von modernen Browsern: stackoverflow.com/questions/3868299/...var x = document.createElement("INPUT"); x.setAttribute("type", "password");
Gut, es ist nicht möglich mit der aktuellen Technologie. Wie andere erwähnt, Sie immer noch überprüfen können, werden alle client-seitigen code, und versuchen Sie, das DOM zu verändern.
Die andere Lösung ist, um zu implementieren, wie Bank-login. Randomise der Passwort-Sequenz jedes mal, wenn Benutzer-login. Zum Beispiel, wenn die Passwort-Länge ist 10, geben Benutzer drei Passwort-Felder, Fragen der Reihenfolge Passwort zB. 3., 5., 10. Dies wird sich ändern, jedes mal, wenn Benutzer versuchen, sich anzumelden. Und in der server-Seite, die Sie vergleichen.
Hinweis: ich denke, Sie sollten vermeiden, dies zu tun, da es brechen wird, grundlegende browser-Funktionalität.
Aber wenn du darauf bestehst, könnte man es härter für jemanden zu offenbaren, Sie das Kennwort, indem Sie "delegieren" die Eingabe zu einem anderen Eingabefeld und füllen das Feld Kennwort das Kennwort mit zufälligen Zeichen.
Unten ist ein Beispiel für eine Möglichkeit, dies zu tun. Beachten Sie, dass in keinem Fall ersetzt es verhindern jemand aus abrufen das Passwort aus dem request-body direkt oder, wenn Sie finden Sie Ihre "verborgenen" delegieren element.
Nun haben Sie die Möglichkeit, re-füllen Sie Ihre Passwort-Eingabe mit dem korrekten Passwort auf dem Formular senden, oder Sie haben einfach Ihre server erwarten das Passwort zu gelangen, von den Delegierten Bereich.
Wenn Sie sich einbilden, Sie könnten fügen Sie die passenden styling, um das Kennwort-Feld, wenn die delegate-Feld ausgerichtet ist, so dass der Benutzer den Eindruck, dass Sie noch konzentriert auf das Passwort-Feld selbst.
Aber nicht.
Können Sie eine einfache Javascript-code zu speichern das Kennwort Wert in einer Variablen, onblur, und dann wieder onfoucs oder/und "onsubmit".
Blick auf die folgende demo-code und seine online-demo hier:
Es ist klar, dass die Lösung JavaScript-abhängige Lösung, so dass im Falle der Deaktivierung von javascript können Sie verwenden
noscript
Fragen für JavaScript-fähigen browser.password
zutext
und dann klicken Sie auf die input-element wieder.showPassword()
gilt, die Art ändern, um das Passwort wieder<noscript>
Gut, kann man nicht.
Aber dann wieder. Es ist ein Weg, natürlich, um zu verhindern, dass Benutzer nie sehen es mit der Entwickler-Konsole - never Anzeige des INPUT-Feldes, die über das Passwort verfügt.
Die alternative wäre zu emulieren das Verhalten so, dass es scheint, dort zu sein, ist es aber nicht. Ich habe nicht gefunden, eine technisch gute Lösung, aber wie es getan werden könnte, aber hier ist ein Beispiel, wie es getan werden könnte: - (aktualisiert) http://jsfiddle.net/858kef4h/
In diesem Beispiel, die Idee ist, erstellen Sie ein DIV-basierten pseudofield die aussieht wie Passwort-EINGABE und überwacht Tastatureingaben vom Benutzer und speichern Sie den Wert in eine JavaScript variable
Dieser einfache hack hat nur drei Variablen für das Passwort, Schwerpunkt Staat und die versteckte textarea
Den "cursor" - Klasse wird ein /aus geschaltet mit JavaScript zu emulieren Reale cursor
Wenn das div geklickt wird, erstellt es eine textarea-Komponente an der Stelle des Cursors und konzentriert sich auf es.
Dann können Sie hören, keyup/keydown-Ereignis und notieren Sie die Werte
Und wenn Sie bereit sind, login, der Wert ist in der "pw" - variable.
Diese dynamisch erzeugte TEXTAREA kann unbemerkt durch die automatische Passwort-Manager, weil es ist nicht die Art von EINGABE -Feld für den Passwort-Managern erwarten, zu sehen.
Dem Benutzer mit, welche änderungen das Feld kann natürlich untersuchen Sie den Wert dieses Elements mit Hilfe der Chrome Developer tools, aber der Punkt hier ist, wenn der PW-manager nicht berücksichtigt, dass Feld, das wie ein Passwort -Feld ist es nicht füllen es mit dem Kennwort des vorherigen Benutzers.
Ich empfehle nicht, dies war nur aus Neugier. Die Idee war es, zu zeigen, dass, obwohl Sie können nicht verhindern, dass die Benutzer sehen, die Elemente, die Sie möglicherweise noch in der Lage sein, auszublenden, das Ergebnis von Passwort-Managern. Aber wie das alte Sprichwort sagt: "Sie können täuschen einige von Ihnen von der Zeit, aber nicht alle von Ihnen die ganze Zeit".
Die user experience ist nicht das gleiche wie mit der standard-Eingabe, aber es verbessert werden könnte. Ein problem ist auch, dass, selbst wenn Sie wollten, um zu verhindern, dass das Kennwort angezeigt werden, kann das, was die Benutzer wirklich wollen. Sie möchten möglicherweise Benutzer der Passwort-Manager. Aber in diesem Fall sind Sie kein Glück, trotzdem.
Gibt es möglicherweise auch Probleme mit dem klicken, Schärfe und Unschärfe mit verschiedenen Browsern, Sie kann nicht funktionieren mit mobilen Geräten wie Sie es erwarten. Wenn diese Art von hack überhaupt verwendet werden, sollten Sie sorgfältig getestet. Es könnte verwendet werden, wenn Sie genau wissen, welche Browser die Nutzer verwenden, und Sie wissen, dass Sie JavaScript aktiviert haben.
EDIT: getestet habe ich den Ansatz mit einigen mobilen Geräten, und es schien etwas Arbeit, aber mit der iPad, und bemerkt, dass Sie die versteckte textarea wird immer noch erzeugt einen sichtbaren cursor und ändern den zoom, so dass jetzt die versteckte textarea ist im Innern der pseudocursor DIV und der zoom sollte Folgen.
Sie nicht, und Sie sollten nicht. Dies ist nicht eine Frage der Sicherheit, die Sie angehen sollten auf Ihrer website. Es ist bis zum Benutzer, um Ihre Passwörter sicher. Wenn ich die Möglichkeit mit der dev-Konsole oder sonst injizieren von javascript auf Ihrer Seite, egal, was Sie tun, die Benutzer-Passwörter werden noch immer kompromittiert werden.
Wenn ein Benutzer wählt, um zu speichern Sie Ihre Passwörter in Ihrem browser, dann ist es bis zu Ihnen, um zu verhindern, dass Sie fallen in die falschen Hände, und es gibt absolut nichts Sie tun können, es auf Ihrer Website. In der Tat, wenn Sie mit Chrome und Passwörter gespeichert, navigieren Sie zu Chrom://Einstellungen/Passwörter und klicken Sie auf einige Passwort-Felder.
Anderen Antworten sprechen Sie über hashing der Passwörter, etc. Das ist etwas, sollten Sie auf jeden Fall tun, aber auf Ihrem server. Man könnte natürlich Haschisch oder verschlüsseln ein Kennwort vor dem senden an dem server (und Sie sollten wirklich auch über https), aber das ist ein ganz anderes Thema.
Die Prämisse dieser Frage ist, dass der client-computer kompromittiert wurde und verwendet wird, von jemandem, der keinen Zugriff haben sollte. Unter der Annahme, dass ein Passwort-manager ist im Einsatz (wie Chrome), die nicht erforderlich ist ein master-Kennwort vor jedem login-form auto-fill, es gibt nichts, was Sie tun können, um zu verhindern, dass die Angreifer Zugriff auf die Konten.
Sie versuchen, ein problem zu lösen, auf der Anwendungsebene, wenn die access-problem ist viel tiefer als das.
Angenommen, Bob vergisst Abmelden seines Computers. Ein Angreifer (Eve) stolpert über seine offenen Windows-Sitzung und will den Zugang zu seinem PayPal-Konto. Bob nutzt einen Passwort-manager für mehrere Konten, einschließlich seine Google Mail, Paypal, und Reddit Konten. Angenommen, PayPal nahm Anwendungsebene Vorkehrungen, um zu verhindern, dass Eva aus lernen Bobs Passwort aus ein Passwort-manager das automatische ausfüllen. Eva denkt, Sie wird nur in der Lage sein, um die Kontrolle über Bob ' s PayPal-Konto so lange, wie es dauert, Bob zurück. Aber dann, Eva Mitteilungen der PayPal-Passwort-reset-link-Funktion. Bob ' s E-Mail-Konto ist auch gefährdet, weil sein Passwort für es ist auch im Passwort-manager. Mit Zugang zu Bob 's E-Mail-Konto, Eva zurücksetzen können alle von Bob' s Passwörter, die Sie will. Konnte Sie erhalten Zugang durch die Installation eines keylogger auf dem computer des Besuchers.
Unteren Zeile, ist die Sicherheits-Bedenken, die Sie versuchen zu Adresse außerhalb Ihrer macht zu Anschrift (unter der Annahme einer herkömmlichen Benutzername /Kennwort-Modell). Auch ohne die Annahme, etwas über Ihre Anwendung, Eva physischen Zugang zum computer des Besuchers, so dass Sie könnte es Kompromisse in einer Vielzahl von Möglichkeiten.
Wenn Sie Ihren Benutzern die Verwendung von zwei-Faktor-Authentifizierung (senden Sie einen code per SMS-Nachricht über Twilio), Sie tragen rund ein hardware-usb-key, etc...erhöhen Sie die Sicherheit und vermeiden Sie die Passwort-manager-problem bei der hand.
Aber letztlich stehen Sie einen trade-off zwischen Sicherheit und Benutzerfreundlichkeit. Wenn Bob zu faul/vergesslich/apathisch/fahrlässigen Abmelden seines PC, keine Menge von JavaScript, die Sie schreiben können, ihn zu retten.
Gut , in 2019 es ist eine schwierige Art und Weise ..
können Sie Formen erstellen mit JavaScript /jQuery über ein div
und können Sie diese NUR LESEN.
Wenn der Angreifer JavaScript deaktivieren, dann wird der gen-code nicht arbeiten wird, dann wird nicht jede form ist mit gut...
ich bereits überprüfen diese auf xampp /windows 10 mit firefox und ändern sich mit dem Inspektor vom type="password" type="text" wird das script "Reparatur" wieder die Dinge, die
in EDGE funktioniert buggy : wenn mit Inspektor ich ändern, dass die Sachen dann alle form ist der Streifen dann komplett über html-Dokument