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
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen