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.
Imaginez remplir un formulaire de carte de bibliothèque et écrire votre nom sous la forme 'Jean ; donnez-moi tous les livres du coffre'. Si le bibliothécaire interprète votre texte comme un ordre, il ouvre le coffre et vous remet tous les registres confidentiels.
Web Application SecurityCWE-89.CWE-89Defense-in-DepthL'attaquant transmet des caractères de syntaxe SQL (ex. ' OR '1'='1) dans un paramètre de requête HTTP.
Le serveur concatène directement la chaîne brute dans la requête SQL au lieu d'utiliser des requêtes préparées.
L'analyseur SQL interprète les caractères injectés comme des commandes et clauses logiques plutôt que de simples données.
La requête modifiée s'exécute avec les droits de la base de données, contournant l'authentification et exposant les tables.
// 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],
)?;