Injection SQL
Une injection SQL se produit quand des données externes modifient la structure d’une requête. Les paramètres lient des valeurs, pas des droits d’accès.
L’injection SQL consiste à introduire des fragments d’instructions SQL par les données qu’une application traite. Si ces valeurs sont intégrées au texte d’une requête, elles peuvent en modifier le sens. Les données lisibles ou modifiables dépendent notamment des droits du compte de base de données utilisé.
Séparer filtre de projet et structure de requête
Un portail de tickets fictif recherche les entrées associées à une référence de projet. Il traite la valeur du champ projectRef comme un paramètre lié : la structure de la requête est fixe et la valeur est transmise séparément par l’interface de base de données. Elle doit rester une valeur de recherche, sans devenir de la syntaxe SQL.
Préparer simplement une requête après l’avoir assemblée à partir des entrées ne crée pas cette séparation. Les données déjà enregistrées ou issues d’autres systèmes ne doivent pas non plus devenir du texte SQL non contrôlé lors d’une construction ultérieure de requête.
Lier les valeurs et fixer les choix de structure
Un champ de tri tel que sortKey est un cas différent. Les paramètres réservés aux valeurs ne remplacent pas des noms de colonnes ou des directions de tri arbitraires. L’application associe donc les choix connus à des colonnes et directions fixes définies dans le code. OWASP décrit explicitement cette distinction entre liaison des paramètres et choix de structure autorisés.
La liaison des paramètres ne vérifie pas non plus le droit de la personne connectée à accéder au projet demandé. Ce contrôle reste du ressort de l’application. Un compte de base de données limité aux droits nécessaires peut réduire les dommages possibles ; il ne supprime pas la construction non sûre des requêtes.
Sources
Termes associés
- Base de donnéesUne collection organisée de données auxquelles le logiciel peut accéder et appliquer des modifications.
- SQLUn langage pour définir, interroger et modifier les données ; pas un produit de base de données unique.
- Mapping objet-relationnelRelier les objets du programme aux données d’une base relationnelle.
- Minimisation des donnéesLa minimisation limite les données personnelles à ce qui est adéquat, pertinent et nécessaire pour une finalité définie.
- Politique de conservation des donnéesUne politique de conservation définit finalité, début, durée et fin du stockage. Tâches de suppression et copies exigent une prise en compte technique.
- Chiffrement par enveloppeLe chiffrement par enveloppe sépare la clé des données de celle qui la protège. Le fichier chiffré et sa clé enveloppée doivent être gérés ensemble.
Votre projet avec ASES
Décrivez-nous votre projet. Nous revenons vers vous avec une première évaluation.