SHA Salz in der MySQL-Abfrage
Ich bin das setzen eines Cookies. So etwas wie:
$_COOKIE['test'] = SHA1('124'.'mysalt');
Nun 124 ist meine id die ich will. Also in meiner MySQL-Tabelle, ich bin versucht, eine Abfrage ausführen, wie:
$sql = ("SELECT * FROM users WHERE SHA1(`id`) = '".mysql_real_escape_string($_COOKIE['test'])."'");
Wie Sie die "mysalt", um die SQL-Abfrage? Weil sonst will ich die richtige id.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden können Concat() für, die.
Sollte die Abfrage sein:
wenn ich das richtig verstehe, was du versuchst zu tun.
users
Tabelle wird wachsen, weil die MySQL haben wird, zu berechnenSHA1(CONCAT('id', 'mysalt'))
jedes mal, wenn die Anfrage ausgeführt wird. Betrachten Sie das hinzufügen einer neuen Spalteid_hash
mitSHA1(CONCAT('id', 'mysalt'))
, indizieren und platzieren Sie Ihre Anfrage Filterung aufid_hash = mysql_real_escape_string($_COOKIE['test'])
Den Lösungen, die bereits vorausgesetzt wird wahrscheinlich gut funktionieren, aber sind Sie sicher, dass Sie dies tun wollen? Wenn das Feld "id" eine eindeutige Identifizierung, die Sie verwenden können, "LIMIT 1" zu stoppen Sie mysql aus der Suche durch alle Ihre Artikel. Eine andere Sache ist, warum nicht verwenden Sie eine separate vordefinierte Feld für diese? Ich meine, in jeder Abfrage die mysql unnötig braucht, um zu berechnen, diese alle sha1-Werte.. Eine Letzte Sache. Ich bin unsicher, warum Sie mit Ihrem Ansatz, aber meine beste Vermutung ist, zu implementieren eine Art von session-key. Ich glaube, das ist eine schlechte Idee für ein paar Gründe: Wenn jemand bekommt, hält auf Ihren Salz -, er hat Zugriff auf alle Ihre Konten. Wenn jemand schnüffelt einer "Sitzung", kann er Sie wiederverwenden, Wann immer er will. Die Wahl einer schwach Salz könnte schwerwiegende Folgen haben. HTH.
Verwenden CONCAT: