Moin!
ich habe gelesen, dass man unter Umständen mittels einer SQL-Injection z.B. einen Passwort-Schutz umgehen kann. Ich habe dies ausprobiert und es ist wie erwartet so wie beschrieben möglich.
Was nicht beschrieben war, war offensichtlich, wie man etwas dagegen unternehmen kann.
Gibts deinen Testcode noch? Dann solltest du sämtliche Variablen, die in den SQL-String eingebaut werden, mal vorher durch die Funktion mysql_real_escape() jagen - damit wird SQL-Injection wirkungsvoll verhindert.
$sql = "SELECT whatever FROM tabelle WHERE username='".mysql_real_escape($username)."' AND password ='".mysql_real_escape($passwort)."'";
Die Funktion mysql_real_escape() oder auch mysql_escape() bewirkt, dass alle "schädlichen" Zeichen in einem String entschärft werden.
Nun frage ich mich, ob man auch eine PHP-Injection durchführen kann. Ich habe es mit der Eingabe von:
""=="" || ""
ausprobiert. Es funktionierte nicht. Ist also eine PHP-Injection nicht möglich und mein Zugangsschutz sicher?
Auch PHP-Code-Injections sind absolut möglich, sie werden allerdings komplett anders realisiert. Angriffpunkte dabei sind entweder Funktionsaufrufe von eval() mit variablem Code, oder ungeschützte include() oder require()-Anweisungen mit variablem Pfad.
Das bedeutet für deinen Fall, dass du dich an dieser Stelle nicht vor PHP-Codeinjections fürchten mußt, dafür aber möglicherweise an anderen Stellen, und mit anderen Auswirkungen.
- Sven Rautenberg
My sssignature, my preciousssss!