Frage:
"Benutzername und / oder Passwort ungültig" - Warum zeigen Websites diese Art von Nachricht an, anstatt den Benutzer darüber zu informieren, welche falsch war?
bobble14988
2012-07-30 13:40:00 UTC
view on stackexchange narkive permalink

Nehmen wir an, ein Benutzer meldet sich bei einer typischen Site an, gibt seinen Benutzernamen und sein Kennwort ein und gibt eine seiner Eingaben falsch ein. Ich habe festgestellt, dass die meisten, wenn nicht alle Websites dieselbe Meldung anzeigen (etwa "Ungültiger Benutzername oder ungültiges Kennwort"), obwohl nur eine Eingabe falsch ist.

Für mich scheint dies einfach zu sein Um den Benutzer darüber zu informieren, welche Eingabe falsch war, fragte ich mich, warum Websites dies nicht tun. Gibt es dafür einen Sicherheitsgrund oder ist es nur etwas, das zur Norm geworden ist?

Für Websites, die eine andere Möglichkeit bieten, festzustellen, ob ein Benutzer vorhanden ist, gibt es keinen Sicherheitsgewinn. Sie sind nur nervig.
Nicht sicherheitsrelevanter Grund: Wenn die Datenbank gesalzene und gehashte Kennwörter enthält, muss für das Bestimmen, dass das Kennwort mit einem vorhandenen übereinstimmt, das Kennwort gehasht werden, das mit jedem Salt (hoffentlich 1 pro Benutzer) in der Datenbank bereitgestellt wird.
One totally non-security related reason is that it's possible the provider doesn't know which was wrong. E.g. if bob1AiliysysvnCMT.com mistypes his user name as bob2AiliysysvnCMT.com and there really is another user bob2AiliysysvnCMT.com.
AiliqbiepfCMT ... the logon entity won't know if the username is valid? You might have to explain that one more...
1. BOB1@PROVIDER.COM gibt die ID als "BOB2@PROVIDER.COM" ein und gibt sein (eigenes) Passwort korrekt ein2. Im Benutzerspeicher3 ist ein Benutzer BOB2 vorhanden. Die Anmeldeeinheit glaubt, dass BOB2 sein Passwort falsch eingibt, während BOB1 in Wirklichkeit seinen Benutzernamen falsch eingibt.
I would agree that it is for security reasons. **I don't know any website where the username is supposed to be secret.** As an example: Google does the "Username and/or Password Invalid" thing but you can still find out if a username exists (by trying to register it).
@JoãoPortela, aber der Erstellungsbildschirm wird von Captcha geschützt. Das ist der Unterschied.
Occams Rasiermesser sagt: Programmierer sind faul. :) :)
AilisgeiudCMTãoPortela not all systems allow you to self-register automatically.
Because hackers can easily hack the accounts if they know any one thing correctly
@user606723 fair point (das hatte ich vergessen). Trotzdem: Ihr Benutzername ist Ihre E-Mail, was sie sehr öffentlich macht.
@Affe ja, aber Sie sehen dieses Verhalten immer noch in Systemen mit öffentlichen Benutzernamen, in denen die Begründung "Es ist für die Sicherheit" nicht gilt. Als solches muss es einen anderen Grund geben ... Vielleicht liegt es nur daran, dass alle anderen es tun.
Even if system allows to check if account exists in some other way, this would still slow down bruteforcing by amount of those requests.
AiliiwqzkwCMTãoPortela, consider this: If gmail allowed you to figure out if a userid exists without captcha, they'd allow spammers a way to harvest legit email accounts. And you're right, if there are cases where userid's are completely public, then it's likely by convention. Why should your website code not support both occurrences?
AilialutisCMT In the mean time I read [ExpectoPatronum](http://security.stackexchange.com/a/17857/2304) and similar ones and it makes a lot more sense. I just wasn't buying the whole: "after they know the username they just have to guess the password" thing.
AilizonvrfCMT In the case of Google, the captcha is there for signing up (like submitting the form), the validation is done via AJAX. You can see the URL, and the POST parameters, and the headers, so the hidden usernames are not the issue.
AilivnpszzCMT The possibility of the user mistyping the username and submitting is extremely rare. Divide it by a billion and get the possibility of the mistyped username matching the one of another user. However, when the user base is huge (like Google's or Yahoo's) the possibility of this happening is higher. But even then, when bob1 mistypes bob2, without knowing he's actually bob1, the site could say "Password invalid for bob2" and the user will get the problem.
Einige Websites teilen Ihnen bei der Registrierung mit, ob die von Ihnen angegebene E-Mail-Adresse bereits in ihrem System vorhanden ist (manchmal weisen sie Sie auf die Funktion zum Zurücksetzen des Kennworts hin). Kann jemand etwas Licht ins Dunkel bringen, wie dies einem böswilligen Benutzer keine andere Möglichkeit gibt, gültige Benutzernamen zu finden? (Ich spreche hier nicht nur über informative JavaScript-Eingabeaufforderungen usw.)
Nur mehr zum Feuer hinzufügen: Facebook sagt Ihnen tatsächlich, wenn der Benutzername nicht existiert. :) :)
Microsoft auch: "* Dieses Microsoft-Konto existiert nicht. Geben Sie eine andere E-Mail-Adresse ein oder erhalten Sie ein neues Konto. *" / "* Dieses Kennwort ist falsch. Stellen Sie sicher, dass Sie das Kennwort für Ihr Microsoft-Konto verwenden. *"
Elf antworten:
user10211
2012-07-30 13:44:08 UTC
view on stackexchange narkive permalink

Wenn ein böswilliger Benutzer eine Website angreift, indem er gebräuchliche Kombinationen aus Benutzername und Passwort wie admin / admin errät, weiß der Angreifer, dass der Benutzername gültig ist, wenn er die Meldung "Passwort ungültig" anstelle von "Benutzername oder Passwort ungültig" zurückgibt.

Wenn ein Angreifer weiß, dass der Benutzername gültig ist, kann er seine Bemühungen mithilfe von Techniken wie SQL-Injections oder Bruteforcing des Kennworts auf dieses bestimmte Konto konzentrieren.

Doesn't this assume that figuring out the username by other means is as difficult as guessing the password? As AilirnjsbuCMT points out, if you can validate the username by other means, it's really pointless to obfuscate it in this one interface.
AiliolswhyCMT Yes, it does assume that. But, that is not a bad assumption.
AiliwwqjvmCMT I think it's not uncommon that accounts that can be used to administer the website are not published in any publicly viewable username list.
@schroeder Ich bin anderer Meinung, für die meisten bekannten Websites (Google Mail, Facebook, Twitter ...) ist der Benutzername sehr öffentlich.
Wouldn't it make sense for a website to state that every possible userid is valid and offer a made-up recovery email address as well? Would this help thwart malicious behavior by making hackers wast time on userids that in fact actually don't exist and have no passwords to crack?
AilioojdvxCMT but then you could just show the usual "username or password wrong" message and call it a day, it's pretty much the same.
AilizbbxveCMT no, because any intelligent user would be able to tell thats a fake message. I agree with Mahn.
It would be effectively the same thing but it would work in environments with validation on each item as well.
@JoãoPortela Ich habe nicht gesagt, dass es eine gültige Annahme für alle Fälle ist, ich habe gesagt, dass es keine schlechte Annahme ist. Natürlich haben einige Websites sehr öffentliche Benutzernamen. Wenn Sie in diesem Fall einen gültigen Benutzernamen kennen, müssen Sie nur das Kennwort erraten. Im Allgemeinen ist es für einen Designer jedoch besser anzunehmen, dass der Benutzername lautet nicht bekannt.
Er kann einfach die Anmeldeseite angreifen, dumm.
Betrachten Sie es einfach aus einer anderen Perspektive. Nehmen wir an, der Hacker erzwingt nur die Passwörter, da es Leute gibt, die ziemlich schwache Passwörter haben. Er würde ein gültiges Passwort finden, das System hat zum Beispiel 1000 Benutzer, er schreibt ein einfaches Skript, um die Benutzernamen von der Website zu entfernen, und dann muss er nur alle Benutzernamen ausprobieren, was in diesem Fall 1000 Versuchen entspricht. Diese Methode ist schneller, da der Angreifer das * einfachste * Passwort verwendet.
Böswillige Benutzer können herausfinden, ob der Benutzername als Teil der Registrierung verwendet wird. Sie würden nicht zulassen, dass sich zwei Benutzer mit demselben Benutzernamen registrieren. Daher ist es bedeutungslos, die Meldung "Anmeldefehler" zu verdecken.
@Gajus nicht alle Websites geben Registrierungsformulare.Auf einigen SaaS-Websites muss der Administrator Benutzer hinzufügen.
ROFLwTIME
2012-07-30 18:12:28 UTC
view on stackexchange narkive permalink

Wie andere bereits erwähnt haben, möchten wir nicht, dass Sie wissen, ob der Benutzername oder das Passwort falsch war, damit wir nicht so anfällig für Brute-Force oder sind Wörterbuch Angriffe ..

Wenn einige Websites ihre Benutzer wissen lassen wollten, welche fehlgeschlagen sind, während sie sich noch im grünen Bereich befinden, könnten sie " honeypot" implementieren. Benutzernamen (wie Administrator, Administrator usw.), die Website-Administratoren darauf hinweisen, dass jemand auf ihrer Website herumschnüffelt. Sie könnten sogar eine Logik einrichten, um ihre IP-Adresse zu sperren, wenn sie versuchen würden, sich mit einem dieser "Honeypot" -Nutzernamen anzumelden. Ich kenne eine Person, die tatsächlich eine Website hatte und in ihren Quellcode einen HTML-Kommentar wie "Da Sie Richard immer wieder vergessen: Benutzername: Käse Passwort: Burger123" in der Nähe des Anmeldefelds eingefügt hat, um jede IP-Adresse zu überwachen, die versucht hat, sie zu verwenden dieser Benutzername / Passwort. Das Hinzufügen einer solchen Überwachungslogik macht viel Spaß, wenn Sie eine Website entwickeln.

Natürlich funktioniert es auch, ungültige Anmeldeversuche zu protokollieren und eine geeignete Logik für den Umgang mit diesen IP-Adressen hinzuzufügen. Ich weiß, dass einige mit mir nicht einverstanden sind, aber je nach Art der Website halte ich es nicht für zu schwierig, den Benutzer darüber zu informieren, solange Sie zusätzliche Sicherheitsmaßnahmen zur Verhinderung verschiedener Arten von Angriffen hinzufügen.

Ich liebe die Idee des codierten falschen Benutzernamens / Passworts, um Hacking-IP-Adressen schneller zu identifizieren.
+1 for the mention of honeypot usernames, though you should make absolutely sure legitimate users cannot create accounts with the same name as the honeypots!
Eh; some legitimate users may look at the html code for legitimate reasons (how's the form implemented; or is that an image?); and be like serious; there's a password in the page and just try it out.
Ich sehe den Wert des zweiten und dritten Absatzes in Bezug auf die gestellte Frage nicht.
dr jimbob
2012-07-31 00:48:25 UTC
view on stackexchange narkive permalink

Meine bevorzugte sichere Implementierung wird von einer Bank durchgeführt, die ich verwende. Wenn ich meinen Benutzernamen richtig eingebe, wird "Welcome Jimbob!" und fordert mich dann auf, Sicherheitsfragen zu beantworten (falls ich mich noch nie über diesen Browser auf diesem Computer angemeldet habe), zu warten, bis ich die Sicherheitsfragen richtig beantwortet habe, und dann mein Sicherheitsbild / meine Beschriftung anzuzeigen und mein Kennwort einzugeben. Wenn ich den falschen Benutzernamen eingebe, wird etwas wie "Willkommen Bessie / Kareem / Randal!" Angezeigt. wo der angezeigte Name sehr ungewöhnlich ist - obwohl Sie immer den gleichen Namen für den gleichen Benutzernamen haben (ich bin mir normalerweise nicht sicher zwischen einem oder zwei Benutzernamen; und der falsche nennt mich durchweg Frenshelia). Ich gehe davon aus, dass es als eine Art nicht kryptografischer Hash implementiert ist, der auf jeden eingegebenen Benutzernamen angewendet wird, der einem Benutzernamen auf einer langen Liste ziemlich ungewöhnlicher Namen eindeutig zugeordnet ist. Auf diese Weise erfahren legitime Benutzer, ob sie den falschen Benutzernamen eingegeben haben (selbst wenn Sie einen ungewöhnlichen Namen wie Bessie haben; es ist sehr unwahrscheinlich, dass der falsche Benutzername, den Sie zufällig erraten haben, auf Ihren spezifischen ungewöhnlichen Namen zurückgeht), ohne dass dies für die Benutzer offensichtlich wird um zufällige Konten zu finden, bei denen der Benutzername nicht vorhanden ist.

Nebenbei: Ich mag den Teil Sicherheitsfragen / Sicherheitsimage nicht besonders, der an Sicherheitstheater zu grenzen scheint. Ein erfahrener Angreifer, der einen MITM-Angriff (Man-in-the-Middle) ausführt (z. B. nach der Installation gefälschter Zertifikate in Ihrem Webbrowser und DNS / ARP-Spoofing, um yourbank.com auf seine IP-Adresse zu verweisen), kann warten, bis Sie versuchen, sich anzumelden Lassen Sie dann ein automatisiertes Skript sich auf dem Computer bei der realen Site anmelden, rufen Sie die Sicherheitsfragen ab, zeigen Sie die ausgewählten Sicherheitsfragen an, senden Sie die Antworten über den Browser selbst an die Site zurück und warten Sie, bis die Sicherheit vorliegt Image, stellen Sie Ihnen das Sicherheits-Image zurück und warten Sie, bis Sie das Kennwort von ihrem Ende aus eingegeben haben. An diesem Punkt verwenden sie das Kennwort, um sich als Sie anzumelden und böswillige Dinge zu tun. Zugegeben, die Fragen + Bild machen den Prozess schwieriger als das ständige Sammeln aller Sicherheitsbilder für eine Vielzahl angegriffener Benutzernamen, indem sie in einen Angriff umgewandelt werden, der in Echtzeit ausgeführt werden muss und möglicherweise eine verdächtige Signatur hinterlässt .

Ja, aber wenn sie das nicht tun, wie sollen Hacker in die anderen Konten der Leute gelangen, ohne das Passwort zu benötigen? (Diese Sicherheitsfragen nerven mich auch - besonders wenn sie obligatorisch sind, aus einer festgelegten Liste, und wenn ich sie beantworte, wird nicht nur ein Link gesendet. Eine Person, die das Lieblingsbuch des Benutzers in der dritten Klasse nicht kannte, tut dies jetzt. und weil einige Administratoren Idioten sind, sind diese Informationen verdammt viel nützlicher als das perfekt sichere Passwort ...)
Manchmal werden Passwörter über das Kabel gehasht. Der Server sendet ein Salt, Sie kombinieren Ihr Passwort mit dem Salt und dann hashen Sie es, dann senden Sie Ihren Hash an den Server. Der Angreifer erhält möglicherweise Zugriff auf diese bestimmte Sitzung, kennt jedoch Ihr Kennwort für zukünftige Sitzungen nicht. Wenn es ein klügeres Schema gibt, würde ich gerne hören.
Dyppl
2012-07-31 00:54:17 UTC
view on stackexchange narkive permalink

Andere Antworten bieten einen guten Einblick in die Sicherheitsgründe für dieses Verhalten. Obwohl sie korrekt sind, bin ich mir ziemlich sicher, dass zumindest einige Websites nur die Autorisierungsroutine so programmiert haben, dass es unmöglich ist zu erkennen, was falsch war - Login oder Passwort.

Beispiel Abfrage:

  SELECT COUNT (*) FROM users WHERE login = 'john' AND hash = '2bbfcdf3f09ae8d700402f36913515cd'  

Dies gibt 1 bei erfolgreichem Protokollierungsversuch und 0 , wenn kein Benutzer mit einem solchen Namen oder vorhanden ist, hat dieser Benutzer ein anderes Kennwort. Es ist nicht möglich festzustellen, welcher Teil der Bedingung fehlgeschlagen ist. Wenn es darum geht, Fehlermeldungen anzuzeigen, sagt Ihnen der Programmierer ehrlich, dass etwas nicht stimmt, und er ist sich nicht sicher, was genau es ist.

Ich persönlich habe ähnliche Anfragen auf einigen PHP-basierten Websites gesehen, also habe ich ' Ich bin mir ziemlich sicher, dass ein Teil des Grundes von der Art und Weise herrührt, wie der Authentifizierungsprozess wirklich codiert ist.

I have made login prompts that responded with the phrase for this exact reason!
AiliaawegsCMT In that case, you're most likely doing it wrong. Either your passwords aren't salted, or they're all salted with the same value.
And to continue kba's point, using the same salt on all values, sometimes called a pepper is basically equivalent to using no salt at all; as all accounts can be attacked in parallel. Furthermore, you always should be careful to do constant time comparison of strings, which SQL will not do; even if they are hashed (especially if the hashing is being done client-side). Otherwise timing attacks can be used.
Ja, aber das war in Schulprojekten und Hobbyprojekten, also kein Grund zur Sorge :)
Just to be clear, I'm saying that this practice exists. Of course it is a bad one.
AilibbzbrcCMT What if your query is something like: "SELECT COUNT(*) FROM users WHERE username = '_USER_' AND hash = HASHFUNC(_PEPPER_ + _PASSWORD_ + salt);". Wouldn't this be a perfectly legitimate query which wouldn't let you know which was wrong?
AilitekvitCMT it would, but it requires hashing functions to be built in the particular SQL dialect
I think this has come *after* the realization/consensus of the ambiguous login error. I don't think this egg came before that chicken. Some developers cut corners here because they know they aren't required to (and shouldn't) tell the user whether it was the email or password that was incorrect.
Charlie Rudenstål
2012-07-31 04:36:44 UTC
view on stackexchange narkive permalink

Es gibt jedoch eine andere interessante Technik, die angewendet werden kann, um einen Benutzeraufzählungsangriff (und mehr) durchzuführen. Es wird als Timing-Angriff bezeichnet. Der Angreifer misst einfach die Antwortzeit für die Authentifizierungsanforderung und wie sie sich zwischen einer gültigen und einer ungültigen Anmeldung unterscheidet.

  1. Remote-Timing-Angriffe im Nanosekundenbereich auf PHP-Anwendungen: Zeit, sie ernst zu nehmen ?
    http://blog.astrumfutura.com/2010/10/nanosecond-scale-remote-timing-attacks-on-php-applications-time-to-take-them-seriously/

  2. Eine Lektion in Timing-Angriffen
    http://codahale.com/a-lesson-in-timing-attacks/

  3. Konstanter Vergleich von Zeitzeichenfolgen in PHP, um Timing-Angriffe zu verhindern
    https://codereview.stackexchange.com/questions/13512/constant-time-string- Vergleich in PHP, um Timing-Angriffe zu verhindern

  4. ol>

    Mein Punkt ist, dass eine solche Nachricht nicht ausreicht, wenn Sie Ihre Anwendung gegen sichern möchten diese Art von Bedrohung.

Lucas Kauffman
2012-07-30 13:42:53 UTC
view on stackexchange narkive permalink

Der Sicherheitsgrund dafür ist, dass es sonst viel einfacher wird, gültige Benutzernamen zu finden.

StasM
2012-07-31 04:41:44 UTC
view on stackexchange narkive permalink

Zusätzlich zu allen bereits gegebenen guten Antworten gibt es ein allgemeines Sicherheitsprinzip, das besagt, dass Sie nicht autorisierten Benutzern keine unerwünschten Informationen zur Verfügung stellen sollten. Das heißt, Wenn Sie die Wahl haben, entweder "Ihre Authentifizierungsdaten sind ungültig" zu beantworten oder zu erklären, welcher Teil ungültig ist, sollten Sie immer den ersteren auswählen. Einige sehr böse kryptografische Angriffe basieren auf der kleinsten Menge an Fehlerinformationen, die von der Implementierung bereitgestellt werden, die versucht, "hilfreich" zu sein - siehe Padding-Orakelangriff. Es ist daher eine gute Idee, sich immer für die kleinstmögliche Information zu entscheiden, die der nicht autorisierten Entität mitgeteilt wird. Wenn seine Kombination aus Benutzername und Passwort nicht gut ist, antworten Sie immer mit "Benutzername / Passwort nicht gut" und geben keine Informationen mehr weiter Daten. Auch wenn es in einem bestimmten Fall (wie Google Mail, in dem der Benutzername öffentlich ist) nicht wichtig ist, empfiehlt es sich, dies standardmäßig zu übernehmen.

aayush anand
2012-07-30 19:20:02 UTC
view on stackexchange narkive permalink

Angenommen, Sie geben einen zufälligen Benutzernamen und ein ebenso zufälliges Passwort ein (notieren Sie sich einfach, welches Passwort Sie eingeben). Jetzt können die Passwörter unter den n Benutzern gemeinsam sein. Wenn die Website sagt, dass das Passwort korrekt ist, dann wissen Sie, was als nächstes folgt. Chaos unter den echten Benutzern, da das Abrufen von Anmeldenamen recht einfach ist.

Jakub Šturc
2012-07-31 00:02:37 UTC
view on stackexchange narkive permalink

Das Bereitstellen einer mehrdeutigen Antwort ist nützlich, um einen Angriff auf Benutzeraufzählung zu verhindern.

In einigen Fällen muss der Angreifer das Benutzerkonto nicht gefährden. Informationen, über die der Benutzer verfügt, sind ohne weitere Maßnahmen ausreichend. Zum Beispiel sind es wertvolle Informationen für den Handel, dass ihr Kunde ein Konto in einem wettbewerbsfähigen Webshop hat.

Niks
2012-07-31 04:31:25 UTC
view on stackexchange narkive permalink

Ich schätze verschiedene Antworten oben, da sie am meisten sagen, aber manchmal wissen Anwendungen auch nicht, was falsch ist. Benutzername oder Passwort. Im Falle einer tokenbasierten Authentifizierung speziell zur Implementierung von SSO (Single Sign On), z. IBM Tivoli Access Manager Ihre Anwendung erhält entweder ein erfolgreiches Token oder erhält einen Fehler zurück.

Verena Haunschmid
2012-07-31 00:22:43 UTC
view on stackexchange narkive permalink

Wenn es sich bei der Anmeldung um eine E-Mail-Adresse handelt, kann leicht festgestellt werden, dass eine Person auf einer Website registriert ist. Vielleicht möchte ich das nicht. >> Manchmal verwenden Benutzer ein echtes Passwort für das E-Mail-Konto für Websites, die sie registrieren, wenn sie die E-Mail-ID als Anmeldung verwenden id :)



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...