
Attaque par déni de service (DDos), attaque d’URL sémantique, Injection SQL …
Il y a une véritable augmentation du nombre d’attaques informatiques visant des sites web.
Aujourd’hui on va vous montrer comment se protéger et éviter les attaques par injection SQL (Structured Query Langage).
Qu’est-ce que une injection SQL ?
Une injection SQL est une insertion de code SQL via des données transmises depuis un site web.
Une injection réussie, permet malheureusement de récupérer des informations d’une base de données ou de modifier, supprimer, ajouter des données. ou de prendre totalement la main sur cette base de données.
Une injection SQL est une technique de piratage exploitant les erreurs de programmation au niveau des scripts PHP avec une base de données SQL. Mais d’autres langages aussi peuvent être victime à ce type d’attaque comme ASP.
Il s’agit de la vulnérabilité la plus courante sur le Web.
Exemple d’attaque par injection SQL
Sur votre site web, vous disposez d’un formulaire de connexion pour que vos clients puissent accéder a leur espace compte.
Pour vérifier les données saisies par l’internaute, la requête SQL sans aucune protection aura la forme suivante :
Une injection SQL basique consiste à «court-circuiter» les conditions de la requête en injectant une condition toujours vraie dans la requête.
Exemple d’injection SQL via le formulaire de connexion:
Suite à l’action de formulaire votre requête sera :
Suite à l’exécution de cette requête au niveau PHP le hacker sera connecté à l’espace membre de votre site, éventuellement il pourra afficher le contenu de la table utilisateur (users), ce qui lui permettra par la suite de se connecter avec des vrais paramètre de connexion.
Les bonnes pratiques pour protéger son site web d’une attaque par injection SQL
Soyez vigilant
Votre seule préoccupation sera la sécurité de votre site web, ne faites jamais confiance aux données saisies par les internautes.
Chaque formulaire de connexion, formulaire de recherche, formulaire d’inscription, paramètres d’URL (pour la pagination, identifient d’article de produit…) sont les porte d’entrée des hackers pour effectuer les attaques par injection SQL.
S’assurer que tous les variables sont vérifiés
Toutes les variables saisies par l’internaute ou les paramètres d’URL qui seront utilisés dans une requête SQL doivent être vérifiées.
Utilisez des requêtes préparées
Avec PHP, on a la possibilité d’utiliser des librairies qui vont préparer vos requêtes avant leur exécution. La préparation des requêtes consiste à la validation des données et de l’échappement des caractères spéciaux qui peuvent compromettre la requête.
Masquez les messages d’erreurs
Les messages d’erreurs peuvent donner des indications aux hackers sur votre base de données (Nom de la base, nom de table, etc.). Il est important de protéger ces informations, donc il est conseillé de masquer l’affichage des messages d’erreurs sur votre site.
Intervention au niveau de la base de données
Il ne faut pas que votre site web se connecte avec les droits ROOT au serveur de base de données, dans le cas contraire un hacker pourrait prendre la main sur votre serveur de base de données.
Donc vous êtes invité a créer des utilisateurs spécifique pour vos base de données.