Sécurité des Formulaires Protection .
htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
Cours Web - PHP : Sécurité, Outils et Architecture
Reprise à la page 42 - Détaillée et Colorée
Thierry Vaira (tvaira@[Link])
2025
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 42/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
Sommaire Détaillé du Cours Avancé
Sécurité des Formulaires
Protection .htaccess
Gestion des Erreurs et Débogage
Modularité et Inclusion de Fichiers
Outils Modernes : Git et Composer
Architecture : Le Modèle MVC
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 43/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 44/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
Sécurité I : Assainissement des Données (XSS)
Problématique : L'injection de code HTML/JavaScript (XSS) via
les formulaires.
L'assainissement doit être fait juste avant l'achage.
Exemple PHP : Sécuriser un champ POST
./images/security-ic
$commentaire_brut = $_POST['commentaire'];
// 1. Nettoyage crucial avant l'affichage
$texte_securise = htmlspecialchars($commentaire_brut);
// 2. L'affichage est désormais inoffensif echo "Votre
commentaire : " . $texte_securise;
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 44/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
Sécurité II : Validation et Filtrage avec filter_var
Objectif : Garantir que l'entrée utilisateur correspond au format
attendu (ex : Email, Entier).
• FILTER_VALIDATE_EMAIL : Structure d'un email.
• FILTER_VALIDATE_INT : Nombre entier valide.
Exemple PHP : Validation d'un Email
$email = 'utilisateur@[Link]';
if (filter_var($email, FILTER_VALIDATE_EMAIL)) { echo
"Email valide et prêt à être traité."; } else { echo
"Format d'email invalide."; }
Créez un formulaire. Validez le champ "âge" avec
FILTER_VALIDATE_INT et achez le résultat sécurisé avec
htmlspecialchars.
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 45/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 46/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
Protection de Répertoire via .htaccess
Rôle : Fournir une première ligne de défense contre l'accès non
autorisé aux chiers sensibles (congurations, classes).
Pour sécuriser le dossier des congurations et des dépendances
(vendor) :
Fichier config/.htaccess
Refuse l'accès à tous les fichiers Require all denied
Order Allow,Deny Deny from all
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 46/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
Mini TP : Protection .htaccess
Objectif : Protéger un dossier admin par mot de passe.
1. Créez un dossier admin.
2. Placez ce chier .htaccess dedans :
AuthType Basic AuthName "Zone Restreinte" AuthUserFile
/path/to/.htpasswd Require valid-user
3. Testez l'accès. Le navigateur devrait demander des
identiants, prouvant que .htaccess fonctionne.
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 47/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 48/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
Gestion des Erreurs : La Conguration Sécurisée
Le danger : Acher des erreurs en production (display_errors
= On ) expose des informations critiques.
• Achage : display_errors = Off (Masque l'erreur).
• Journalisation : log_errors = On (Enregistre l'erreur sur le
serveur).
Exemple PHP : Début du script sécurisé
// Masquer les erreurs et forcer la journalisation
ini_set('display_errors', 0); ini_set('log_errors',
1);
// Enregistre tout sauf les simples notifications
error_reporting(E_ALL & E_NOTICE);
// Une erreur surviendrait ici, mais resterait masquée
à l'utilisateur
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 48/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
Outils de Débogage et Mini TP
Débogage simple (sans IDE) : Inspection des variables à
l'exécution.
• var_dump($var) : Ache le type, la taille et la valeur.
Indispensable pour les objets et les tableaux complexes.
• print_r($var) : Plus simple et lisible pour les tableaux
simples.
TP : Débogage d'un objet
class User { public $id = 1; private $password =
'secret'; }
$u = new User(); echo "<pre>"; var_dump($u); // Révèle
les propriétés privées echo "</pre>";
Exercice : Que révèle var_dump qu'une simple print_r ne montre
pas sur un objet?
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 49/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 50/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
Modularité : include vs require
Règle d'or : Éviter le copier-coller.
• require_once : Pour les éléments dont la présence est vitale
(classes, conguration). Arrêt fatal si échec.
• include : Pour les éléments de structure optionnels
(header/footer). Avertissement si échec, mais continue.
TP : Modularité et Chemins Absolus
L'utilisation de __DIR__ garantit que le chemin est toujours correct.
// Assure le chargement de la configuration critique
require_once __DIR__ . '/config/[Link]';
// Inclut un template de pied de page optionnel
include __DIR__ . '/templates/[Link]';
Exercice : Renommez [Link] et testez l'impact du require_once
(crash) vs include (warning).
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 50/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 51/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
Git : Workow Essentiel
Git est le standard pour le Contrôle de Version.
1. Ajout : git add fichier (Zone de staging ).
2. Commit : git commit -m "Description claire..."
(Instantané local).
3. Partage : git push (Envoie au dépôt distant).
Rôle : Composer installe les librairies et génère l'Autoloader.
TP : Utilisation de l'Autoloader
// Charge TOUTES les classes nécessaires require
'vendor/[Link]';
use Monolog; use Monolog;
$log = new Logger('nom_appli'); $log->pushHandler(new
StreamHandler('[Link]', Logger::WARNING));
$log->warning('Ceci est un test de log.');
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 51/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 52/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
MVC : Le Détail des Couches
MVC est un patron d'architecture qui sépare les responsabilités
(SoC).
M Modèle : Logique métier (objets) et gestion des données.
V Vue : Code de présentation (HTML/CSS). **N'a aucune
logique métier.**
C Contrôleur : Chef d'orchestre. Il relie le Modèle et la Vue.
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 52/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
Mini TP : Flux MVC Simplié
Le Flux de la Requête (Cycle de Vie)
1. Utilisateur → Contrôleur.
2. Contrôleur → Modèle (Récupère les données).
3. Modèle → Contrôleur (Retourne les données brutes).
4. Contrôleur → Vue (Transmet les données à acher).
5. Vue → Réponse HTML.
Implémenter la séparation des responsabilités : le Modèle donne les
données, la Vue les ache. Le Contrôleur est le seul à voir les deux.
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 53/ 41
Sécurité des Formulaires Protection .htaccess Gestion des Erreurs et Débogage Modularité et Inclusion de Fichiers O
Merci pour votre attention !
Questions et Débrieng du TP ?
tv (2013) Cours Web - PHP tvaira@[Link] v0.1 54/ 41