Injeção SQL contornando mysql_real_escape_string() — como se proteger?
Olá a todos! Sou um desenvolvedor PHP iniciante e estou com uma dúvida. Li que a função `mysql_real_escape_string()` (ou sua equivalente `mysqli_real_escape_string()`) é considerada uma proteção confiável contra injeções SQL. Mas recentemente me deparei com um post antigo no Stack Overflow onde afirmam que é possível contorná-la.
No meu projeto, estou usando a extensão obsoleta `mysql_*` (sei que está deprecated, mas o projeto é antigo e ainda não tenho como reescrever tudo para PDO). Aqui está um exemplo do meu código:
```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);
```
Ingenuamente, achava que escapar caracteres como aspas era suficiente. Mas naquela discussão falavam sobre codificações, caracteres multibyte e alguma mágica com `GBK`. Não entendi bem a essência da vulnerabilidade. Como exatamente é possível contornar `mysql_real_escape_string()`? E o principal