|
En quoi consistent les attaques par injection de code SQL ? |
|
|
|
Sécurité -
Protection
|
|
Ecrit par Kamal AOUDA
|
|
25-07-2006 |
|
En quoi consistent les attaques par injection de code SQL ?
Il s’agit d’insérer un code malveillant dans une chaîne de caractère afin de
corrompre le contenu d’une base de données ou de subtiliser des informations
confidentielles (SQL Server, MySQL, Oracle…). Typiquement le processus
d’injection termine prématurément une chaîne de caractère en lui ajoutant une
nouvelle commande SQL qui sera exécutée par le gestionnaire de base de données.
En d’autres termes, Les injections SQL prennent typiquement la forme de
concaténations directes de code dans les données entrées par un utilisateur.
Le code suivant donne un exemple d’injection sous SQL Server (nous rappelons que
SQL Server utilise une version Microsoftisée de SQL connue sous le nom Transact
SQL).
var Shipcity; ShipCity = Request.form ("ShipCity"); var sql = "select * from
OrdersTable where ShipCity = '" + ShipCity + "'";
L'utilisateur est invité à renseigner le nom d'une ville. Si l'utilisateur entre
Roco, la requête devient:
SELECT * FROM OrdersTable WHERE ShipCity = 'Roco'
Mais supposons qu’un hacker renseigne ce qui suit :
Roco'; drop table OrdersTable—
Dans ce cas, la requête assemblée par le script devient :
SELECT * FROM OrdersTable WHERE ShipCity = 'Roco';drop table OrdersTable--'
Le point-virgule « ; » indique la fin d'une requête et le début d'une autre. Le
double tiret « -- » marque le début d’un commentaire qui sera ignoré par le
gestionnaire de base de données. Lorsque SQL Server exécute cette instruction,
il y aura une sélection de tous les enregistrements OrdersTable où ShipCity =
Roco puis il y aura une suppression pure et simple de la table OrdersTable. Vous
imaginez qu’en situation réelle un tel incident pourrait avoir de graves
conséquences sur l’activité d’une entreprise.
Tant que le code SQL injecté est syntaxiquement valide, le gestionnaire de base
de données n’a aucun moyen de soupçonner qu’il est malicieux. De ce fait, il
faut systématiquement valider toutes les données entrées par un utilisateur.
Des techniques permettant de contrer les attaques par voie d’injection SQL sont
énumérées dans l'article suivant.
Se prémunir contre les attaques par injection de code SQL
Kamal AOUDA
|
|
Dernière mise à jour : ( 25-07-2006 )
|