Test-injection-sql
Ce projet est une application simple d'authentification avec un tableau de bord, développée en PHP, MySQL, Bootstrap et JavaScript. Il comprend :
- Une page d'inscription permettant aux utilisateurs de créer un compte.
- Une page de connexion sécurisée avec hachage de mot de passe.
- Un tableau de bord réservé aux utilisateurs authentifiés.
- Un système de déconnexion.
- XAMPP installé sur votre machine.
- Un navigateur web moderne.
- Un éditeur de texte (VS Code, Sublime Text, etc.).
- Téléchargez et placez le projet dans le dossier
htdocsde XAMPP. - Lancez XAMPP et démarrez
ApacheetMySQL. - Créez la base de données via
phpMyAdminen exécutant la commande SQL suivante :
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE,
password VARCHAR(255)
);- Configurez la connexion à la base de données dans
db.phpsi nécessaire. - Accédez à l'application via
http://localhost/nom_du_projet/login.php.
L'objectif est de démontrer comment une mauvaise gestion des requêtes SQL peut compromettre la sécurité.
-
Rendre le projet vulnérable
- Modifiez
login.phppour remplacer le code sécurisé :
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ?"); $stmt->bind_param("s", $username); $stmt->execute();
par un code non sécurisé :
$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'"; $result = $conn->query($query);
- Modifiez
-
Effectuer une attaque SQL
- Dans le champ Nom d'utilisateur, entrez :
' OR '1'='1
- Laissez le champ Mot de passe vide ou mettez n'importe quoi.
- Résultat : l'attaquant se connecte sans mot de passe.
- Dans le champ Nom d'utilisateur, entrez :
- Utiliser des requêtes préparées (
bind_param()). - Ne jamais concaténer les entrées utilisateurs directement dans les requêtes SQL.
- Implémenter des limitations de connexion après plusieurs tentatives échouées.
Pour mettre ce projet en ligne :
- Choisissez un hébergeur PHP (ex : Hostinger, 000Webhost, OVH).
- Exportez la base de données depuis
phpMyAdminet importez-la sur le serveur. - Modifiez
db.phppour adapter les paramètres de connexion au serveur distant. - Téléversez les fichiers via FTP avec FileZilla.
- Accédez au site via l'URL fournie par l'hébergeur.
🎯 Ce projet montre l'importance de la sécurité en développement web. Appliquez toujours les bonnes pratiques !