SGBD : commandes sql dangereuses

Les commandes les plus dangereuses en SQL

Avoir un accès en lecture/écriture/modification à une base de données est dangereux. Même sans être mal intentionné, un utilisateur peut faire une fausse manipulation, écraser des données, en ajouter de nouvelles ou en supprimer.

Tout dépend de la criticité des données

Est-ce dangereux de supprimer les données ? de les mettre à jour ? de les consulter ? Suivant les cas de figures, le niveau de risque et les enjeux ne sont pas les mêmes.

  • Avoir simplement la lecture sur une base de données de comptes utilisateurs avec mots de passe associés est un vrai problème (et très mal conçu mais c’est un autre problème).
  • Avoir accès aux notes et appréciations d’un bulletin scolaire est surtout embêtant lorsque l’on peut modifier ces derniers.
  • Et pour une base de données des infractions à la loi, c’est la suppression des données qui peut être le plus embêtant.

En utilisant les requêtes SQL on peut donc faire pas mal de grabuge :

  • SELECT : la commande de base qui permet de lire les données d’une base. Particulièrement dangereux car « invisible ». On ne sait pas quand les données sont lues et éventuellement aspirées.
  • DROP : ou comment supprimer des tables en 1 seule ligne de commande sans garde-fou
  • TRUNCATE et DELETE : pour supprimer des lignes dans une table
  • DBCC WRITEPAGE dans SQL Server : permet d’altérer des données en passant outre les mécanismes de contrôle et protection

Et puis, il y a aussi les erreurs classiques :

  • Injections SQL : on utilise une requête syntaxiquement juste mais mal formée afin d’attaquer une base de données
  • CREATE INDEX, CREATE VIEW et SELECT sans conditions ni limite car ces commandes peuvent terriblement ralentir une base de données
  • UPDATE : pour mettre à jour les données
  • GRANT et REVOKE : pour donner ou supprimer des accès. Peut être terrible lorsque les instructions sont couplées avec CASCADE (pour appliquer les modifications en cascade)

Les commandes SQL sont des outils. Pas plus dangereux qu’un marteau dans les mains d’un bricoleur. Mais entre les mains d’un jeune enfant ou d’un meurtrier… Les commandes précédentes sont utilisées quotidiennement par les administrateurs de bases de données et les erreurs sont rares. Mais entre des mains novices ou malintentionnées, les conséquences peuvent être importantes. Donc, attention à qui à accès aux bases de données.