Avatar ·

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