Documentation
Helper HTMLCleaner
Table des matières ▼
Présentation
La principale fonctionnalité de ce helper est de nettoyer un flux HTML provenant d'un éditeur WYSIWYG, pour s'assurer qu'il ne contient aucun code interdit.
Il offre aussi la possibilité de convertir un texte brut en flux HTML.
Installation
Pour que l'objet HTMLCleaner puisse fonctionner, il faut que la bibliothèque HTMLPurifier soit installée et accessible. Pour cela, vous avez plusieurs solutions.
Installation système
La méthode recommandée est d'utiliser les paquetages de votre système. Par exemple, sous Ubuntu, HTMLPurifier peut être facilement installé en tapant la commande suivante :
sudo apt install php-htmlpurifier
Installation avec Composer
Il est aussi possible d'utiliser le gestionnaire de dépendances Composer (voir la documentation dédiée). Pour cela, créer un fichier composer.json avec ce contenu :
{
"require": {
"htmlpurifier/htmlpurifier": "4.*"
}
}
Puis exécutez la commande composer update
Ensuite, vous devrez ajouter le chemin vers les fichiers dans la liste des chemins d'inclusion (voir la documentation de la configuration).
Dans le fichier temma.json, ajouez les lignes suivante :
{
"includePaths": [
"/chemin/vers/projet/vendors/htmlpurifiers/src"
]
}
Installation manuelle
Vous avez aussi la possibilité de télécharger les fichiers manuellement, et de les copier dans le répertoire lib/ de votre projet.
Attention, si vous les placez dans un sous-répertoire (nommé "htmlpurifier" par exemple), il faudra déclarer ce sous-répertoire dans la liste des chemins d'inclusion (voir la documentation de la configuration). Dans ce cas, il faudra ajouter les lignes suivantes dans le fichier temma.json :
{
"includePaths": [
"/chemin/vers/projet/lib/htmlpurifier"
]
}
clean()
Fonction statique qui reçoit un flux HTML et qui retourne ce même flux après l'avoir nettoyé. Les balises HTML non autorisées sont retirées. Les attributs de balises non autorisés sont retirés aussi. Les retours-chariots multiples sont transformés en paragraphes.
Signature de la méthode :
\Temma\Utils\HTMLCleaner::clean(string $html, ?bool $targetBlank=null,
?bool $nofollow=null, bool $removeNbsp=true) : string
Paramètres :
- $html : Flux HTML à nettoyer.
-
$targetBlank : Indique s'il faut mettre un attribut target="_blank"
sur les liens.
- true pour mettre l'attribut sur tous les liens.
- false pour ne jamais ajouter l'attribut.
- null pour ajouter l'attribut sur les liens externes (commençant par http:// ou https://).
-
$nofollow : Indique s'il faut mettre un attribut rel="nofollow"
sur les liens.
- true pour mettre l'attribut sur tous les liens.
- false pour ne jamais ajouter l'attribut.
- null pour ajouter l'attribut sur les liens externes (commençant par http:// ou https://).
- $removeNbsp : Indique s'il faut retirer les espaces insécables.
Valeur de retour : Le flux HTML nettoyé.
Exemple :
use \Temma\Utils\HTMLCleaner as TµHTMLCleaner;
$input = <<< EOT
<h1>Titre
<p onclick="alert('XSS');">Paragraphe<br>
<br>
<script>alert('XSS');</script>
EOT;
$output = TµHTMLCleaner::clean($input);
/*
<h1>Titre</h1>
<p>Paragraphe</p>
*/
text2html()
Fonction statique qui prend un texte brut et retourne un flux HTML. Les retours-chariots et les paragraphes (blocs de texte séparés par une ligne vide) sont gérés, de mêmes que les liens.
Signature de la méthode :
\Temma\Utils\HTMLCleaner::text2html(string $text, bool $urlProcess=true,
bool $nofollow=true) : string
Paramètres :
- $text : Texte à traiter.
- $urlProcess : true pour traiter les URLs. Les liens vers des sites externes (commençant par http:// ou https://) s'ouvrent dans un nouvel onglet (target="_blank").
- $nofollow : true pour mettre les URL en nofollow.
Valeur de retour : Le flux HTML généré.
Exemple :
use \Temma\Utils\HTMLCleaner as TµHTMLCleaner;
$text = "Premier paragraphe,
sur deux lignes.
Site : https://www.temma.net";
$html = TµHTMLCleaner::text2html($text);
/*
<p>Premier paragraphe,<br />
sur deux lignes.</p>
<p>Site : <a target="_blank" rel="nofollow"
href="https://www.temma.net">https://www.temma.net</a></p>
*/
Précédent : | Helper Email |
Suivant : | Helper IniExport |
Table des matières
- Migration : Comment passer de Temma 1.x à la version 2
- Installation : Télécharger Temma et l'installer pour démarrer votre projet Web
- Configuration : Toutes les directives de configuration du fichier etc/temma.json et les variables d'environnement utilisables en option
- Bibliothèques externes : Comment utiliser des bibliothèques de fonctions externes
- Routage : Le système de routage par défaut de Temma, et le routage avancé
- Log : Utilisation du système de log, gestion par niveaux de criticité
- Contrôleurs : Pièces essentiels de votre application Web
- Vues : Templates Smarty ou exports JSON/CSV/RSS/iCal/INI
- Injection de dépendances : La colonne vertébrale de vos développements applicatifs
- Sessions : Extension des sessions utilisateurs gérées par PHP
- Sources de données : Pour gérer l'accès aux données de manière unifiée
- Modèle : Comment utiliser les DAO pour accéder aux bases de données
- Flux d'exécution : Comment gérer le flux d'exécution, entre les plugins et le contrôleur
- Plugins : Comment utiliser les plugins, et écrire les vôtres pour modulariser votre code
- Attributs : Comment filtrer l'accès aux contrôleurs et aux actions
- Tests : Pour écrire des tests d'intégration automatisés.
- Interface en ligne de commande : Pour créer des scripts exécutables en ligne de commande, initialisés automatiquement par Temma
-
Helpers :
Objets proposés par Temma pour vous aider dans plusieurs circonstances
- Scripts en ligne de commande
-
Contrôleur + plugin
- Auth : Contrôleur et plugin servant à gérer l'authentification des utilisateurs
- Plugins
- Attributs
-
Plugins Smarty
- urlize : Modificateur transformant un texte en URL
- filenamize : Modificateur transformant un texte en nom de fichier
- nbsp : Modificateur transformant des espaces en espaces non sécables
-
Objets utilitaires
- ANSI : Pour mettre en forme les textes écrits sur la sortie standard
- BaseConvert : Pour faire des conversions de bases numériques
- DataFilter : Pour filtrer et valider des données
- Email : Pour envoyer des emails
- HTMLCleaner : Pour nettoyer un flux HTML provenant d'un éditeur WYSIWYG
- IniExport : Pour exporter des données au format INI
- Json : Pour lire des flux JSON pouvant contenir des commentaires
- Lock : Pour verrouiller l'accès à un fichier, ou l'exécution du script PHP courant
- Registry : Pour stocker proprement des variables globales
- Smarty : Pour traiter des templates Smarty en dehors de la vue
- Term : Gestion des terminaux (TTY)
- Text : Différents traitements sur les chaînes de caractères
- Timer : Pour gérer des chronomètres