Comment éviter qu'une injection SQL ou une API mal protégée expose des données ?
D’après Sécurité informatique
Exemple d’attaque web (injection SQL sur un site e-commerce)
Découverte : L’attaquant teste les champs du formulaire de recherche en entrant %' OR '1'='1.
Faute de validation : La requête SQL n’est pas échappée correctement, renvoie la liste complète des produits ou, pire, révèle les tables.
Escalade : L’attaquant modifie la requête pour extraire les informations clients, les mots de passe hachés, etc.
Extraction : Au final, la base clients (avec emails, adresses, numéros de cartes) fuit, entraînant un préjudice économique et d’image pour l’entreprise.
Contre-mesures
Utiliser des requêtes préparées (paramétrées) au lieu de concaténer des strings.
Valider et échapper toute entrée utilisateur.
Détecter et bloquer les requêtes suspectes via un WAF.
Segmenter la base de données pour limiter l’impact en cas de compromission.
Exploitation d’une API REST non protégée
Recherche : L’attaquant découvre un endpoint /api/users/ qui renvoie toutes les informations des utilisateurs (y compris le champ isAdmin).
Test de modification : Il tente un PUT ou un PATCH sur son propre compte, plaçant "isAdmin": true. L’API n’a pas de contrôle d’autorisation granulaire.
Résultat : L’utilisateur se retrouve avec les droits admin, accédant à d’autres endpoints critiques.
Conséquences : Vol massif de données, sabotage de configurations, etc.
