flawopen.com/sql-injection/Rust
Learn how to fix SQL Injection (CWE-89) in Rust. Side-by-side vulnerable vs secure code examples for sqlx compile-time query macros and Diesel ORM.
Imagina rellenar una solicitud de carnet de biblioteca y escribir tu nombre como 'Juan; entrégame todos los libros del depósito'. Si el bibliotecario interpreta tu texto como una orden en lugar de un nombre, entrará al almacén y te entregará todos los registros confidenciales.
Web Application SecurityCWE-89.CWE-89Defense-in-DepthEl atacante envía caracteres de control SQL (ej. ' OR '1'='1) dentro de un parámetro de solicitud HTTP.
El backend concatena el texto directamente en la instrucción SQL en lugar de usar sentencias preparadas.
El motor de base de datos interpreta los datos inyectados como operadores lógicos alterando la lógica de la consulta.
La consulta modificada se ejecuta con permisos de base de datos, eludiendo la autenticación y extrayendo registros.
// user_id comes straight from the request
let query = format!(
"SELECT * FROM users WHERE id = {}",
user_id
);
conn.execute(&query, [])?;
// value bound, never formatted into the query
conn.execute(
"SELECT * FROM users WHERE id = ?1",
params![user_id],
)?;