SQL = vs WIE vs WIE BINÄRE, groß-und Kleinschreibung nicht

Habe ich auf ziemlich seltsame Verhalten mit SQL WIE = = und WIE BINÄRE

Hinweis : Die ersten 3 Zeichen des Passwortes ist eigentlich 3Vf und der rest der Abfrage ist syntaktisch korrekt zu.

SUBSTRING(password,1, 3) = "3VF"      -> returns true
SUBSTRING(password,1, 3) = "3Vf"      -> returns true

SUBSTRING(password,1, 3) LIKE "3VF"   -> returns true
SUBSTRING(password,1, 3) LIKE "3Vf"   -> returns true

Jedoch, wenn ich WIE BINÄRE, bekomme ich case sensitive Verhalten

SUBSTRING(password,1, 3) LIKE BINARY "3VF"   -> returns false
SUBSTRING(password,1, 3) LIKE BINARY "3Vf"   -> returns true

Ich verstehe nicht, warum die Vergleiche mit groß-und Kleinschreibung. Bedenkt man das Passwort ist ein VARCHAR(64). In all den Ressourcen, die ich gesehen habe online es sagt, dass = und WIE sowohl die groß-und Kleinschreibung.

Hinweis: die Abfrage, die bei mir läuft ist

SELECT * from users where username="natas16" AND SUBSTRING(password,1, 3) = XX

Dies ist auch NICHT eine Reale Anwendung, sondern eine natas Ebene. Es ist eine Art 'hacken' Spielplatz. Sie haben verschiedene Ebenen mit Schwachstellen sollen Sie zu nutzen. Also dies ist nicht eine Reale Welt Beispiel.

http://www.overthewire.org/wargames/natas/

nur so sind wir klar, man soll nicht zum speichern von Passwörtern in einer Datenbank. verwenden Sie die PASSWORD('Function') richtig zu lagern. Obwohl das Verhalten, das Sie beschreiben, ist sehr merkwürdig. dev.mysql.com/doc/refman/5.0/en/password-hashing.html
sparen Sie passsword als plain text?? Verwenden Sie ein Raute-Taste und Spalte collate als latin_colate_cs.
natas ist eine Art von hacking-Spielplatz. Sie bekommen eine Herausforderung, und Sie sollen zu brechen, irgendwie. das Ziel ist die brute-force.

InformationsquelleAutor Ahmed Aeon Axan | 2013-03-19

Schreibe einen Kommentar