La sécurité en développement est un pilier crucial de la cybersécurité. Elle consiste à intégrer des pratiques sécuritaires dès les premières étapes de la conception et du développement d'applications, afin de prévenir les vulnérabilités et de protéger les données sensibles. Dans le contexte actuel où les cyberattaques sont de plus en plus sophistiquées, comprendre et mettre en œuvre des mesures de sécurité dans le développement logiciel est essentiel.
Ces exercices vous guideront à travers des scénarios pratiques pour identifier et corriger les vulnérabilités courantes dans le code. Vous apprendrez à sécuriser vos applications contre des attaques telles que les injections SQL et les failles XSS (Cross-Site Scripting). Chaque exercice est conçu pour vous familiariser avec des techniques spécifiques, en vous fournissant les connaissances nécessaires pour développer des applications robustes et sécurisées.
Validation des Entrées Utilisateur
Objectif :
Apprendre à valider et à assainir les entrées utilisateur pour prévenir les vulnérabilités courantes telles que les injections SQL, les failles XSS, et autres attaques basées sur les entrées non sécurisées.
Prérequis :
Connaissance de base en PHP et HTML.
Serveur web local (comme LAMP, XAMPP ou WAMP).
Instructions :
Créez un simple formulaire HTML permettant à l'utilisateur d'entrer son nom et son adresse email.
Traiter les données en PHP pour éviter les inclusions de caractères malicieux.
Correction et explications
Protection contre l'Injection SQL
Objectif : Comprendre et implémenter des mesures de sécurité pour prévenir les attaques par injection SQL.
Instructions
Créez une base de données simple avec une table d'utilisateurs.
Écrivez une requête SQL vulnérable à l'injection SQL.
Modifiez le code pour utiliser des requêtes préparées afin de prévenir l'injection SQL.
Étapes
1. Création de la base de données et de la table :
Utilisez un SGBD (par exemple, MariaDB, MySQL ou PostegreSQL) pour créer une base de données et une table users.
Insérez ensuite au moins un utilisateur dans cette table (par exemple, admin)
2. Requête SQL vulnérable :
Écrivez une requête SQL dans un fichier en PHP (par exemple, login.php) qui est vulnérable à l'injection SQL.
Ouvrez votre navigateur et accédez au fichier login.php.
Injectez des requêtes SQL malveillantes pour voir si l'application est vulnérable.
3. Utilisation de requêtes préparées :
Modifiez le code pour utiliser des requêtes préparées et prévenir l'injection.
Re testez l'application en utilisant la même injection SQL que précédemment.
Correction et explications
Protection contre les failles XSS
Objectif : Apprendre à identifier et à prévenir les failles XSS en comprenant comment un attaquant peut injecter des scripts malveillants dans une application web.
Prérequis :
Connaissance de base en PHP et HTML.
Serveur web local (comme XAMPP ou WAMP).
Étapes :
1. Création d'une Application Web Vulnérable
Créez un simple formulaire HTML permettant à l'utilisateur de soumettre un commentaire, puis affichez ce commentaire sur la même page sans validation.
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$comment = $_POST['comment'];
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Commentaires</title>
</head>
<body>
<form method="post" action="">
Commentaire: <input type="text" name="comment">
<input type="submit" value="Soumettre">
</form>
<h2>Commentaires:</h2>
<p><?php echo $comment; ?></p>
</body>
</html>
2. Injection d'un Script Malveillant :
Soumettez le formulaire avec un script malveillant comme commentaire :
<script>alert('XSS Attack!');</script>
Lorsque le commentaire est affiché, le script sera exécuté, montrant une alerte avec le message "XSS Attack!".
3. Compréhension du Comportement de la Requête :
Le formulaire envoie les données du commentaire via une requête POST.
La valeur de $_POST['comment'] est affichée directement sans validation, ce qui permet l'injection de code JavaScript.
4. Prévention de la Faille XSS
Modifiez le script PHP pour utiliser htmlspecialchars() afin de convertir les caractères spéciaux en entités HTML, empêchant ainsi l'exécution du script.
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$comment = htmlspecialchars($_POST['comment'], ENT_QUOTES, 'UTF-8');
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Commentaires</title>
</head>
<body>
<form method="post" action="">
Commentaire: <input type="text" name="comment">
<input type="submit" value="Soumettre">
</form>
<h2>Commentaires:</h2>
<p><?php echo $comment; ?></p>
</body>
</html>
5. Vérification de la Protection
Soumettez à nouveau le formulaire avec le script malveillant :
<script>alert('XSS Attack!');</script>
Cette fois, le script ne sera pas exécuté, et le commentaire affichera littéralement <script>alert('XSS Attack!');</script>.
Comments