Aller au contenu

SQL : Structured Query Language

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é

← Tout le glossaire