1 Se prémunir contre les injections SQL

Dans le bulletin d’actualité 2011-45, nous avons brièvement présenté les vulnérabilités de type injection SQL, ainsi que des méthodes pour déterminer si un serveur web a été la cible d’attaque de ce type. Nous allons maintenant nous intéresser à des techniques à déployer en amont, lors du développement de l’application web, pour éviter d’être vulnérable à ce type d’attaque :

  • se connecter à la base de données avec un compte aux privilèges limités ;
  • vérifier que les données entrées par un utilisateur sont du type et du format attendu (longueur, intervale de valeur). Par exemple, en PHP une fonction is_numeric() pour vérifier qu’une variable est bien de type numérique ;
  • utiliser des fonctions spécifiques à une base de données pour « échapper » les caractères spéciaux dans une chaîne de caractère. Par exemple, nous trouvons en PHP mysql_real_escape_string ou sqlite_escape_string(). Lorsque les mécanismes d’échappement de caractères propres à une base de données ne sont pas disponibles, il est toujours possible d’utiliser addslash() ou str_replace() ;
  • utiliser des requêtes préparées (prepared statement). Cela consiste à créer un modèle de requête, en laissant des paramètres qui seront complétés ultérieurement. Une fois le modèle créé, il est possible de l’appeler en lui passant des arguments permettant de compléter la requête avant de l’exécuter. Un des avantages du point de vue de la sécurité réside dans le fait que les valeurs des paramètres sont automatiquement échappées si nécessaire.

Il est également possible de se protéger en mettant en place un Web Application Firewall (WAF) chargé d’inspecter les requêtes HTTP avant que le serveur web ne les traite, c’est le principe de la défense en profondeur. Cependant il est conseillé d’appliquer des bonnes pratiques de programmation et ne pas se reposer uniquement sur les fonctionnalités de filtrage d’un WAF.

De plus, le CERTA recommande une inspection régulière des journaux afin de détecter toute anomalie.

Rappel des avis émis

Dans la période du 07 au 13 novembre 2011, le CERT-FR a émis les publications suivantes :