Espace client   Webmail
Protéger votre site contre les attaques SQL Injection

Protéger votre site contre les attaques SQL Injection

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 SQL  injection:

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

sql1

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

sql2

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

Exemple de saisie permettant l’injection SQL :

sql3

Dans cette configuration votre requête sera :

sql4

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 votre site d’une attaque SQL injection:

  • La 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érifier touts vos variables:

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.

  • Masquer 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.

  • 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.

 

Vous cherchez un hébergement fiable pour votre site web?

Retrouvez toutes nos offres d’hébergement web sur

www.novahoster.tn !!

Comments are closed.

Novahoster

Reviewed by on

Rating: 9 out of 10