PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Salt einführen macht Probleme


The Fury
19.11.2009, 10:33:25
Guten Tag an alle,

ich habe vor nem Jahr ungefähr nen kleines Script geschrieben für mein Forum, sodass das Passwort durch eine Reihenfolge von MD5/SHA1 "verschlüsselt" wurde. Nun will ichnoch einen Salt einführen. Bei MYSQL bin ich allerdings nicht so bewandertl.

/** VVerschlüsselung initialisieren und Salt einfügen in die Datenbank **/
$accounts[$anz][opass] = $row["password"];
$opass = $row["password"];
if (!mysql_error()){
$fehler = mysql_error();
}
if ($fehler == ""){


$salt = create_salt(4);
$accounts[$anz][npass] = md5(sha1(md5(sha1(md5(sha1(md5(sha1(md5($salt.'~'.$opass)))))))));
$npass = md5(sha1(md5(sha1(md5(sha1(md5(sha1(md5($salt.'~'.$opass)))))))));

mysql_query("ALTER TABLE `bb1_users` ADD salt VARCHAR(10) NOT NULL default '0'");
mysql_query("update `bb1_users` set salt='$salt' where userid=$aid");

mysql_query("update `bb1_users` set password='$npass' where userid=$aid");
if (!mysql_error()){ $fehler = mysql_error();
}
}
$anz ++;
}

Der salt wird auch erstellt, was ich bereits geprüft habe, aber er fügt nichts in die Tabelle ein, egal wie ich es bisher versucht habe.

Ich bin da mit meinem Latein am Ende.

Wenn ich den SALT nachher mir wieder aus der DB holen will, kann ich dies doch tun mit:
$saltdb = mysql_query("SELECT `salt` FROM `bb1_users` WHERE userid=$aid");

Ich muss mich mal weiter in SQL einlesen!

Vielen Dank

Indyk
19.11.2009, 10:53:52
Hallo Fury,

a) die verschlüsselung ist übertrieben und unnötig , aber das sei jedem selbst überlassen.
b)

ALTER TABLE musst du, wenn überhaupt , nur EINMAL ausführen, ein einziges mal um die tabelle zu erweitern, diese veränderung bleibt dann bestehen.

warum speicherst du überhaupt den salt? Ist das nicht ungefähr so sinnvoll wie das passwort in echt zum MD5 Hash mitzuspeichern?

und dein SELECT scheint korrekt zu sein. Hast du mal versucht die jeweiligen SQL Querys direkt in phpmyadmin oder heidi einzugeben, um zu sehen ob es dort funktioniert?

frohes schaffen.

The Fury
19.11.2009, 13:37:59
Hallo,

ich werde die Verschlüsselung wohl auch auf 1-3 Schlüssel verkürzen, doch wollte erst mal den Fehler rauskriegen.

Stimm alter table muss ich nur einmal ausführen - ich torfkopf.

SQL-Befehl: Dokumentation

SELECT `salt`
FROM `bb1_users`
WHERE userid = $aid
LIMIT 0 , 30

MySQL meldet: Dokumentation
#1054 - Unknown column '$aid' in 'where clause'

Kennt wohl mein $aid ned, wie sonst zuteilen?

Indyk
19.11.2009, 13:43:56
Ich kann deinem SQL quote nicht folgen.

Hast du den jetzt so wie er ist in phpmyadmin kopiert?
wenn ja {
du musst die variable natürlich durch den sonst per php ausgegeben inhalt ersetzen , indem fall irgend eine ID z.b. 30
} wenn nicht {
Wie und Wo hast du diesen Query ausgefüllt, und was war in $aid?
}

The Fury
19.11.2009, 13:53:57
Ja natürlich kopiert und bei meiner ID gibt es natürlich den SALT aus, der leider 0 ist.

urvater
19.11.2009, 14:54:08
Hab ursprünglich Blödsinn geschrieben. Daher ersten Eintrag komplett gelöscht.

Kann es sein, daß die Spalte zu klein ist?
Laß die dein Update mal anzeigen bevor du ihn einfügst.

$aid ist in PHPMyAdmin nicht bekannt, da dort die Variable nicht deklariert ist.

Noch ein EDIT: Mir ist aufgefallen, daß $aid auch in deinem eigentlichem Script nicht deklariert ist.

The Fury
19.11.2009, 15:03:15
Bei dem update geht das ja ohne Probleme!

Bei dem Befehl, packt er den SALT einfach nicht in die DB!

mysql_query("INSERT INTO `bb1_users` value salt='$salt' WHERE userid='".$aid."'");

EDIT: Also die Spalt "salt" wird erstellt, nur steht halt null drinne.

Der salt wird auch erstellt bzw. er wird beim ECHO befehl als das angezeigt, was ich erwarte.

urvater
19.11.2009, 15:03:40
if (!mysql_error()){
$fehler = mysql_error();
} Wenn kein mysql Fehler auftritt ist $fehler der Mysql Fehler?
Laß einfach das if weg.

The Fury
19.11.2009, 15:10:25
Habe ich mal gemacht, frag mich nicht wieso ich das vor nem Jahr geschrieben habe %)

Hm habe mir das einfacher vorgstellt gehabt ^^

The Fury
20.11.2009, 14:33:07
Habe festegestellt, dass es mit dem $aid bei dem normalen Script geht (Installation), aber nicht mit dem SALT.

Soll ich noch irgendetwas anhängen?