Infrastructure
SQL : Structured Query Language. « Langage de requêtes structuré », par analogie avec le guichetier d'archives à qui l'on formule une demande précise et qui revient avec exactement les fiches demandées, ni plus ni moins.
Déclaratif : On décrit le résultat voulu, pas le chemin pour l'obtenir : le moteur de la base choisit lui-même index et ordre des jointures. C'est reposant, jusqu'au jour où le moteur choisit mal.
Plusieurs dialectes : Une norme existe, mais chaque moteur l'enrichit à sa façon. Le code « portable » d'une base à l'autre relève de la même catégorie littéraire que la licorne : on en parle beaucoup, on en croise peu.
Injection : Concaténer une donnée venue de l'extérieur dans une requête permet à cette donnée de devenir du code. Les requêtes paramétrées séparent structurellement les deux.
Contrôle d'accès : Les droits par table, par colonne ou par ligne (RLS) se déclarent aussi dans le langage, au plus près des données.
Ce qui arrive si on s'en passe
Concaténer dans une requête une donnée venue de l'extérieur permet à cette donnée de devenir du code : un champ de formulaire bien choisi fait lire toute la table des utilisateurs, contourner une authentification ou supprimer des enregistrements, avec les droits du compte applicatif. Les requêtes paramétrées séparent structurellement la donnée de l'instruction, et les oublier une seule fois suffit. Sans contrôle d'accès déclaré par table, par colonne ou par ligne, ce compte voit tout, ce qui transforme la moindre injection en inventaire complet. Le guichetier d'archives rapporte exactement les fiches demandées ; il ne vérifie simplement jamais qui les demande, ni en quels termes.
Explication de la marmotte
Une base de données ressemble à une immense armoire remplie de fiches bien rangées : des clients, des commandes, des produits. Pour y trouver quelque chose, on écrit une phrase dans un langage spécial, un peu comme une demande très précise faite à un bibliothécaire : « donne-moi tous les clients qui habitent à Lyon et ont commandé en mars ». Le programme cherche lui-même la meilleure façon de répondre et renvoie la liste. Ce même langage sert aussi à ajouter des fiches, à les modifier ou à les supprimer.
Où ce terme est utilisé
- JavaScript et SQL côté web, ce qu'il faut savoir des deux langages (20 occurrences)
- Exploiter une injection SQL aveugle temporelle (14 occurrences)
- L'injection de prompt n'est pas un bug (9 occurrences)
- Chiffrement au niveau champ dans une base de données (5 occurrences)
- Intégrer SAST, DAST et IAST dans une CI/CD (5 occurrences)
- Sécuriser les bases de données managées cloud (5 occurrences)
- Langages informatiques : histoire, inventeurs et usages (4 occurrences)
- Sécuriser les extensions tierces WordPress (4 occurrences)
- Comment lire un rapport OWASP Top 10 (3 occurrences)
- Concevoir une défense en profondeur par couches (3 occurrences)
