Comprendre les injections SQL
L'injection SQL est l'une des vulnérabilités les plus critiques du web. Elle permet à un attaquant d'interférer avec les requêtes qu'une application adresse à sa base de données.
1. Exemple simple
Voici une requête vulnérable classique en PHP/SQL :
SELECT * FROM users WHERE id = 1;Si l'utilisateur injecte ' OR '1'='1, la requête devient :
SELECT * FROM users WHERE id = '' OR '1'='1';2. Payload Avancé
Pour extraire des données, on utilise souvent l'opérateur UNION.
' UNION SELECT null, username, password FROM users--[!IMPORTANT] Ne testez jamais cela sur un site réel sans autorisation préalable.
3. Prévention
La meilleure façon de se protéger est d'utiliser des requêtes préparées (prepared statements).
const userId = "1";
const user = await prisma.user.findUnique({
where: { id: userId }
});Avec cette approche, le moteur de base de données traite les paramètres comme des données pures, et non comme du code exécutable. 🛡️