UN RAPPORT SUR LA SECURITE EN PHP
ETUDIANT
MOUHAMAD NDIAYE PROFESSEUR :
M.CISSE
UFR: SCIENCE ET TECHNOLOGIE
DEPARTEMENT : IFORMATIQUE
NIVEAU : Licence2
Introduction
I. Vulnérabilités Communes en PHP
1. Injections SQL
2. Cross-Site Scripting (XSS)
3. Cross-Site Request Forgery (CSRF)
4. Inclusions de Fichiers (LFI/RFI)
5. Exécution de Code à Distance (RCE)
II. Meilleures Pratiques de Sécurité en PHP
1. Validation et Nettoyage des Entrées
2. Utilisation des Bibliothèques et Frameworks Sécurisés
3. Gestion des Sessions
4. Configurations Sécurisées du Serveur
5. Stockage Sécurisé des Mots de Passe
6. Protection Contre les Attaques de Force Brute
III. Mesures Avancées de Sécurité en PHP
1. Utilisation des Politiques de Sécurité du Contenu (CSP)
2. Gestion des Erreurs et des Journaux
3. Mises à Jour et Patching
4. Tests de Sécurité
Conclusion
Introduction
PHP est l'un des langages de programmation les plus utilisés pour le développement web. Sa
popularité est due à sa simplicité et à sa flexibilité. Cependant, ces mêmes caractéristiques
peuvent entraîner des vulnérabilités si les meilleures pratiques de sécurité ne sont pas suivies.
Ce rapport examine les principales vulnérabilités associées à PHP et propose des mesures
pour sécuriser les applications développées avec ce langage.
I. Vulnérabilités Communes en PHP
1. Injections SQL
A. Description
Les injections SQL se produisent lorsque des données fournies par l'utilisateur sont insérées
directement dans une requête SQL sans être correctement filtrées. Cela permet à un attaquant
d'exécuter des commandes SQL arbitraires.
B. Exemple
C. Pvention
Utiliser des requêtes préparées et des bibliothèques comme PDO ou MySQLi avec des
instructions préparées.
2. Cross-Site Scripting (XSS)
A. Description
php
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND
password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
$result = $stmt->get_result();
php
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE username =
'$username' AND password = '$password'";
$result = mysqli_query($conn, $query);
Les attaques XSS se produisent lorsque des scripts malveillants sont injectés dans des pages
web vues par d'autres utilisateurs. Les attaquants peuvent utiliser ces scripts pour voler des
cookies, détourner des sessions, ou rediriger des utilisateurs vers des sites malveillants.
B. Exemple
C. Prévention
Utiliser des fonctions de nettoyage des données comme htmlspecialchars ou
htmlentities.
3. Cross-Site Request Forgery (CSRF)
A. Description
Le CSRF se produit lorsque des attaques exploitent la confiance qu'un site a dans le
navigateur d'un utilisateur. Une requête non autorisée est exécutée à l'insu de l'utilisateur
authentifié.
B. Exemple
Une simple requête GET pour changer l'adresse email :
C. Pvention
Utiliser des tokens CSRF dans les formulaires pour vérifier les requêtes.
Et lors du traitement :
php
// Génération du token
$token = bin2hex(random_bytes(32));
$_SESSION['csrf_token'] = $token;
?>
<form method="post" action="process.php">
<input type="hidden" name="csrf_token" value="<?php echo $token; ?>">
<!-- Autres champs de formulaire -->
</form>
html
<a href="http://example.com/[email protected]">Click
here</a>
php
echo "Hello, " .
htmlspecialchars($_GET['name']) . "!";
php
echo "Hello, " . $_GET['name'] . "!";
II. Meilleures Pratiques de Sécurité en PHP
1. Validation et Nettoyage des Entrées
Toujours valider et nettoyer les données entrantes. Utiliser des fonctions comme filter_var
pour la validation.
2. Utilisation des Bibliothèques et Frameworks Sécurisés
Utiliser des bibliothèques et frameworks qui implémentent des pratiques de sécurité robustes,
comme Laravel ou Symfony. Ces frameworks fournissent des protections intégrées contre de
nombreuses vulnérabilités courantes.
3. Gestion des Sessions
Utiliser des sessions sécurisées avec des identifiants de session complexes et régénérer les ID
de session régulièrement.
4. Configurations Sécurisées du Serveur
sactiver les fonctions dangereuses comme exec, passthru, shell_exec, system.
Configurer correctement les permissions des fichiers et répertoires.
Utiliser HTTPS pour chiffrer les communications entre le serveur et les clients.
5. Stockage Sécurisé des Mots de Passe
Toujours hasher les mots de passe avant de les stocker dans la base de données en utilisant des
algorithmes sécurisés comme bcrypt.
php
$password_hash = password_hash($password, PASSWORD_BCRYPT);
php
$email = filter_var($_POST['email'],
FILTER_VALIDATE_EMAIL);
if (!$email) {
die("Email non valide");
}
php
session_start();
session_regenerate_id(true);
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !