Paar Fragen zur PHP-Sicherheit

Aber ich hab ja jetzt die hash "verschlüsselung" (für dich gumbo extra in "" geschrieben ^^) drin...
Dann nenn es wenigstens Hash-Bildung/-Generierung oder meinetwegen auch „neudeutsch“ Hashing. Aber nicht Hash-Verschlüsselung! Es ist einfach keine Verschlüsselung. Dazu fehlen zwei wichtige Merkmale: ein Schlüssel und eine Umkehrfunktion.
 
hmmm da käme mir noch die idee von dennis in den sinn...
die usernamen einfach per strrev in die db schreiben...
und bei der abfrage natürlich auch erst wieder per per strrev umkehren...
somit wäre der code kaputt... allerdings wäre das schon wieder umgangen falls er den code umgekehrt eingibt....
ich könnte ja die leerzeichen herausfiltern...
OK sry Gumbo! dann nen ich es (da ich ja modern bin :P ) absofort hashing ;)

ich überleg mir noch was und frage euch dann was ihr davon haltet ;)
So jetzt muss ich aber los fussball @ public viewing gucken :)
 
Zuletzt bearbeitet:
Die Zeichenfolgen einfach umzukehren, bringt nicht wirklich eine zusätzliche Sicherheit. Denn auch hier gilt Kerckhoffs’ Prinzip: Die Sicherheit eines Kryptosystems darf nicht von der Geheimhaltung des Algorithmus abhängen sondern nur vom Algorithmus selbst.
 
matdacat Vielen Dank für den Hinweis!
Das wollte ich später mal machen... hab das ma eben getestet... gefährlich wie gut das klappt... aber auch total logisch!
Aber ich hab ja jetzt die hash "verschlüsselung" (für dich gumbo extra in "" geschrieben ^^) drin... somit würde der code ja eh nie so an kommen... das dürfte doch eigentlich reichen oder?
Also so meinte ich:
PHP:
$pw = strrev(sha1($_POST['pw']));
# und weiterhin:
mysql_query("SELECT uid FROM user WHERE name = '$name' AND pw = '$pw'")

EDIT: Verdammt! damit ist die $name variable trotzdem noch offen... hmmm muss ich mir mal was einfallen lassen wie ich das hinkrieg...

Hallo,

um einen String für die Datenbank vorzubereiten, nehme ich immer die Funktion mysql_real_escape_string() her. Die setzt vor jedem für die Datenbank relevanten Zeichen einen \ und entwertet diese somit. Hier nochmal dein Beispiel mit meinem Tip:

PHP:
$pw = strrev(sha1($_POST['pw']));
$name=mysql_real_escape_string($_POST['name']);

mysql_query("SELECT uid FROM user WHERE name = '" . $name . "' AND pw = '" . $pw . "';");

Gruß bratkartoffel
 
hey das ist echt ne gute funktion > mysql_real_escape_string($_POST['name']);
habs ma getestet funktioniert! Also hab die Passwort-Abfrage mal weggelassen
und als usernamen dann von madcat das beispiel ' OR 'haha'='haha eingegeben...
ohne real ascape kann man damit den login umgehen.... mit geht das nicht mehr...
Also tausend dank! das setze ich jetzt möglichs bei allen db abfragen ein... weil diese lücken habe ich dann nämlich öfters....
danke!
 
Zurück