101 lines
3.6 KiB
Plaintext
Executable File
101 lines
3.6 KiB
Plaintext
Executable File
Cahier des charges — Script de sécurisation HTML par htmlspecialchars()
|
||
------------------------------------------------------------------------
|
||
|
||
1. Objectif :
|
||
-------------
|
||
Créer un script PHP qui :
|
||
- Parcourt un répertoire source récursivement.
|
||
- Identifie tous les champs dans les fichiers `.php` à protéger contre l'injection HTML :
|
||
- <input> (tous types : text, hidden, checkbox, radio)
|
||
- <textarea>
|
||
- <option> dans un <select>
|
||
- Attributs : title, alt
|
||
|
||
2. Répertoires :
|
||
----------------
|
||
Répertoire à scanner :
|
||
/datas/07Prod/wwwRoot/alpha.wbAdm
|
||
|
||
Fichier log du traitement (mode réel) :
|
||
/datas/07Prod/wwwRoot/alpha.wbAdm/admin/adminInclude/Outillage/htmlSpecialChars.txt
|
||
|
||
Fichier log de simulation :
|
||
/datas/07Prod/wwwRoot/alpha.wbAdm/admin/adminInclude/Outillage/htmlSpecialChars_simulation.txt
|
||
|
||
3. Fichiers à traiter :
|
||
-----------------------
|
||
- Tous les fichiers ayant l’extension `.php`.
|
||
- Ignorer tous les autres types de fichiers.
|
||
|
||
4. Dossiers à exclure (à ne pas parcourir ni traiter) :
|
||
--------------------------------------------------------
|
||
- /admin/adminInclude/makeCss
|
||
- /Catalogue/src
|
||
- /Design/src
|
||
- /_var/sauvegardes
|
||
- /admin/adminInclude/Outillage
|
||
- /admin/themes/dumpTheme/
|
||
- /_var/factures123/
|
||
- /_var/facturesSite/
|
||
|
||
5. Règles de traitement :
|
||
--------------------------
|
||
Pour chaque fichier .php :
|
||
- Rechercher les lignes contenant les balises ou attributs concernés.
|
||
- Vérifier si la valeur est injectée via PHP (ex: <?=$var?> ou '.$var.').
|
||
- Vérifier que `htmlspecialchars()` n’est pas déjà utilisé.
|
||
- Sinon, modifier en encapsulant la variable avec `htmlspecialchars()` et en vérifiant que la valeur est non null, non vide
|
||
|
||
Transformations attendues :
|
||
<input value="<?=$val?>"> devient value="<?=htmlspecialchars($val)?>">
|
||
<textarea><?=$text?></textarea> devient <textarea><?=htmlspecialchars($text)?></textarea>
|
||
<option value="<?=$id?>"> devient <option value="<?=htmlspecialchars($id)?>">
|
||
<input type="checkbox" value="<?=$val?>"> idem
|
||
alt="<?=$txt?>" devient alt="<?=htmlspecialchars($txt)?>"
|
||
title="<?=$txt?>" devient title="<?=htmlspecialchars($txt)?>"
|
||
|
||
- Si la valeur est statique (ex: value="texte") :
|
||
Remplacer par : <?=htmlspecialchars("texte")?>
|
||
|
||
- Si aucun code PHP n'est présent, l'ajouter avec <?= ... ?>
|
||
|
||
- La gestion de balises avec attributs multiples,
|
||
|
||
- L'analyse de code multi-lignes ou enchevêtré,
|
||
|
||
- des variables doubles, du type "'.$var1.'" "'.$var2.'"
|
||
|
||
6. Comportement général :
|
||
--------------------------
|
||
- Le script est lancé via :
|
||
/datas/07Prod/wwwRoot/alpha.wbAdm/admin/adminInclude/Outillage/htmlSpecialChars.php
|
||
|
||
- Au lancement, il propose deux modes :
|
||
1. Simulation : génère uniquement le rapport, sans modifier les fichiers.
|
||
2. Traitement réel : modifie les fichiers et génère un rapport de traitement.
|
||
|
||
- Le script applique les règles d’exclusion de fichiers et dossiers.
|
||
|
||
- Pour chaque balise détectée :
|
||
- Si mode simulation :
|
||
Créer le fichier htmlSpecialChars_simulation.txt contenant :
|
||
- Fichier concerné
|
||
- Ligne analysée (avec numéro de ligne)
|
||
- Proposition de remplacement
|
||
- Statut : modifié / déjà protégé / ignoré
|
||
|
||
- Si mode réel :
|
||
- Modifier les fichiers concernés
|
||
- Générer le fichier htmlSpecialChars.txt
|
||
|
||
7. Rapport de traitement (console + fichier log) :
|
||
---------------------------------------------------
|
||
- Nombre total de balises analysées
|
||
- Nombre total de balises modifiées
|
||
- Nombre total de balises ignorées
|
||
- Liste des fichiers modifiés (avec chemin)
|
||
- Durée totale du traitement (en secondes, arrondi à 2 décimales)
|
||
|
||
8. Fin du cahier des charges
|
||
-----------------------------
|