Avatar ·

Inyección SQL que evade mysql_real_escape_string() — ¿cómo protegerse?

¡Hola a todos! Soy un desarrollador PHP principiante y me encontré con una situación muy extraña. En muchos foros escriben que la función `mysql_real_escape_string()` es una protección confiable contra inyecciones SQL, y siempre la usaba. Pero recientemente leí que hay formas de evadirla, y eso me asustó mucho. Tengo un código simple para la autenticación de usuario: ```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); ``` Pensaba que escapar todas las comillas y caracteres especiales hacía la consulta segura. Pero dicen que si se usa una codificación multibyte (por ejemplo, GBK o SJIS), se puede elegir una secuencia de caracteres que "se coma" la barra invertida de escape y permita insertar código SQL arbitrario. ¿Es cierto? ¿Cómo funciona exactamente? Y lo principal: ¿cómo debo proteger mis consultas ahora? ¿Acaso