Les attaques par injection SQL représentent plus du quart des actes de piratages recensés sur le Web. Découvrez comment se protéger au mieux contre ce type d’attaque.

Qu’est-ce qu’une injection SQL ?

Une injection SQL est une technique de piratage exploitant les failles d’un site internet ou d’une application par le biais de commandes SQL plus ou moins complexes dans le but de voler les données enregistrées dans la base de données ou de prendre totalement la main sur cette base de données.

Il s’agit de la vulnérabilité la plus courante sur le Web.

Un exemple simple d’attaque par injection SQL

Imaginons que vous ayez sur votre site un formulaire de connexion pour vos utilisateurs de cette forme :

Formulaire injection SQL

La requête SQL basique sans aucune protection pour vérifier les données saisies par l’utilisateur aura cette forme :

sql-injection-exemple

Une injection SQL basique consiste à « shunter » les conditions de la requête en injectant une condition toujours vraie dans la requête.

Exemple de saisie permettant l’injection SQL :

Formulaire injection sql exemple

Dans cette configuration votre requête sera :

sql-injection-exemple-2

En fonction du traitement qui est fait après cette requête au niveau PHP, cette requête aura pour conséquence de connecter le hacker à l’espace membre voir éventuellement d’afficher au hacker le contenu de la table users, ce qui lui permettra par la suite de se connecter à l’espace membre de votre site avec de vrais paramètres de connexion.

Les bonnes pratiques pour protéger son site d’une attaque par injection SQL

Le mot d’ordre : Vigilance

Soyez très  vigilant à tous les niveaux de votre site internet, ne faites jamais confiance aux données saisies par l’utilisateur. Chaque formulaire de connexion, formulaire de recherche, paramètres d’URL (pour la pagination notamment) sont autant de risque d’attaque par injection SQL.

Vérifiez toutes vos variables

Toutes les variables provenant d’une saisie de l’utilisateur ou d’un paramètre d’URL susceptible d’être utilisées dans une requête SQL doivent être vérifiées.

Utilisez des requêtes préparées

Avec PHP notamment il est désormais possible d’utiliser des librairies qui vont « préparer » vos requêtes avant leur exécution. La « préparation » des requêtes consiste notamment à la validation des données et de l’échappement des caractères spéciaux pouvant compromettre la requête.

La plus connue de ces librairies se nomme PDO, mais récemment avec PHP cette fonction est incluse de base dans la nouvelle classe MySQLi.

Masquez les messages d’erreurs

Les messages d’erreurs peuvent donner de précieuses indications aux hackers sur votre base de données notamment : Nom de la base, nom de table etc… Il est important de ne pas rendre ces informations accessibles donc il est conseillé de masquer les messages d’erreurs susceptibles de s’afficher sur votre site. Sur nos hébergements mutualisés vous pouvez gérer cela directement depuis votre espace client dans la configuration PHP en mettant la variable de configuration display_errors à Off (Pour plus d’informations, consultez notre rubrique d’aide).

Au niveau de la base de données

Dans la mesure du possible il ne faut pas que votre site ou application ne se connecte avec les droits root au serveur de base de données, dans le cas contraire un hacker pourrais prendre la main sur l’ensemble du serveur de base de données. Créez donc un utilisateur spécifique pour votre site.

Cryptez les données sensibles de votre base de données telles que les mots de passe utilisateur. Cela ne vous protégera pas directement contre un injection SQL mais cela limitera les dégats en cas d’attaques. Aujourd’hui encore beaucoup d’attaque révèlent des systèmes où les mots de passe sont stockés en clair dans la base de données.

Comment tester la vulnérabilité de votre site ?

Il est important de prendre connaissance des vulnérabilités de votre site avant d’être la cible d’un pirate informatique.

Il existe quelques outils permettant de savoir si votre site internet est vulnérable aux attaques par injection SQL :

Vous cherchez un hébergement fiable pour votre site web ? Retrouvez toutes nos offres d’hébergement web sur www.Lws.fr !

hébergement web