Avatar ·

SQL-Injection unter Umgehung von mysql_real_escape_string() – wie schützt man sich?

Hallo zusammen! Ich bin ein PHP-Anfänger und habe eine Frage. Ich habe gelesen, dass die Funktion `mysql_real_escape_string()` (oder ihr Pendant `mysqli_real_escape_string()`) als zuverlässiger Schutz gegen SQL-Injection gilt. Aber kürzlich bin ich auf einen alten Stack Overflow-Beitrag gestoßen, in dem behauptet wird, dass man sie umgehen kann. In meinem Projekt verwende ich die veraltete `mysql_*`-Erweiterung (ich weiß, dass sie deprecated ist, aber das Projekt ist alt und ich habe noch keine Möglichkeit, alles auf PDO umzustellen). Hier ist ein Beispiel meines Codes: ```php $username = mysql_real_escape_string($_POST['username']); $password = mysql_real_escape_string($_POST['password']); $query = "SELECT * FROM users WHERE username='$username' AND password='$password'"; $result = mysql_query($query); ``` Ich habe naiv angenommen, dass das Escapen von Zeichen wie Anführungszeichen ausreicht. Aber in dieser Diskussion ging es um Zeichenkodierungen, Multibyte-Zeichen und eine Art Magie mit `GBK`. Ich habe die Schwachstelle nicht ganz verstanden. Wie genau kann man `mysql_real_escape_string()` umgehen? Und vor allem