Hallo,
ich informiere mich momentan genauer über das Thema PHP und Sicherheit und habe mehrere Artiekl über Sql Injection u. ä. gelesen..
Versuche nun des öfteren die dort gezeigten Beispiele nachzuvollziehen/auszuprobieren (natürlich nur auf eigene Scripte)
Ausgangsscript ist z.B. bei mir:
PS: Mir ist schon klar, dass ich erstens sofort die $_POST-Variable in die MySql-Anweißung schreiben könnte und ich alles in den Anführungszeichen schreiben kann...habs versuchsweiße so gemacht.
Gebe ich für $_POST[login_password] = ."' OR 1=1; /* ein, kommt ein MySql Error.
Gebe ich für '$_POST[login_password] = ; mysql_query(UPDATE benutzer set password = 2) passiert auch nichts.
Und gebe ich md5("asdasd") ein gibt php bei der Ausgabe genau das gleiche aus...
Wie gesagt, ich möchte nicht der Power-Hacker werden, möchte nur die Möglichkeiten und die Funktionsweiße verstehen und auch mal selber ausprobiert haben...
Würde mich über eine Antwort, was ich bei diesen Beispielen falsch mache, freuen.
EDIT: Eine andere Frage die mir gerade aufgekommen ist, da ich gerade eine kleine secure Klasse schreibe... ist es sinnvoller htmlspecialchars vor dem Speichern in die DB zu verwenden und später immer so ausgeben zu lassen oder doch lieber htmlentities beim speichern in di DB und bei der Ausgabe html_entity_decode verwenden? Oder anders gefragt, muss man nach der Speicherung von Strings in der DB bei der Ausgabe Angst haben, dass Fremdcode eingebunden wird?
Grüße
Matthiasnet
ich informiere mich momentan genauer über das Thema PHP und Sicherheit und habe mehrere Artiekl über Sql Injection u. ä. gelesen..
Versuche nun des öfteren die dort gezeigten Beispiele nachzuvollziehen/auszuprobieren (natürlich nur auf eigene Scripte)
Ausgangsscript ist z.B. bei mir:
PHP-Code:
$login_password = $_POST[login_password];
$login_mail = $_POST[login_mail];
$res = "Select COUNT(id) as anzahl FROM benutzer WHERE mail = '".$login_mail."' AND password = '".$login_password."'";
$sql = mysql_query($res);
$anzahl = mysql_result($sql,"anzahl");
if ($anzahl > '0') {
echo "Stufe 1";
//....
Gebe ich für $_POST[login_password] = ."' OR 1=1; /* ein, kommt ein MySql Error.
Gebe ich für '$_POST[login_password] = ; mysql_query(UPDATE benutzer set password = 2) passiert auch nichts.
Und gebe ich md5("asdasd") ein gibt php bei der Ausgabe genau das gleiche aus...
Wie gesagt, ich möchte nicht der Power-Hacker werden, möchte nur die Möglichkeiten und die Funktionsweiße verstehen und auch mal selber ausprobiert haben...
Würde mich über eine Antwort, was ich bei diesen Beispielen falsch mache, freuen.
EDIT: Eine andere Frage die mir gerade aufgekommen ist, da ich gerade eine kleine secure Klasse schreibe... ist es sinnvoller htmlspecialchars vor dem Speichern in die DB zu verwenden und später immer so ausgeben zu lassen oder doch lieber htmlentities beim speichern in di DB und bei der Ausgabe html_entity_decode verwenden? Oder anders gefragt, muss man nach der Speicherung von Strings in der DB bei der Ausgabe Angst haben, dass Fremdcode eingebunden wird?
Grüße
Matthiasnet
Kommentar