Equivalence de htmlspecialchars()
Résolu
Mouch89
Messages postés
118
Statut
Membre
-
Mouch89 Messages postés 118 Statut Membre -
Mouch89 Messages postés 118 Statut Membre -
Bonjour,
J'aimerais sécuriser l'affichage des entrées utilisateurs (commentaires d'articles, témoignages, envoi par messagerie interne au site, etc).
Je me suis naturellement tourné vers htmlspecialchars, mais la fonction telle qu'elle est ne me convient pas. J'aimerais quelque chose de plus propre dans l'affichage.
Limite une fonction qui supprime automatiquement les balises <qqc></qqc> m'irait. Ca existe une fonction comme ça ? Ou je dois faire la mienne ?
Et le top du top, ça serait une fonction qui me laisse les <b> et <i> !
Vous avez connaissance de fonctions de ce type ?
Merci de votre aide !
J'aimerais sécuriser l'affichage des entrées utilisateurs (commentaires d'articles, témoignages, envoi par messagerie interne au site, etc).
Je me suis naturellement tourné vers htmlspecialchars, mais la fonction telle qu'elle est ne me convient pas. J'aimerais quelque chose de plus propre dans l'affichage.
Limite une fonction qui supprime automatiquement les balises <qqc></qqc> m'irait. Ca existe une fonction comme ça ? Ou je dois faire la mienne ?
Et le top du top, ça serait une fonction qui me laisse les <b> et <i> !
Vous avez connaissance de fonctions de ce type ?
Merci de votre aide !
A voir également:
- Equivalence de htmlspecialchars()
- Équivalent de word gratuit - Guide
- Equivalent de coco - Accueil - Réseaux sociaux
- Fermeture de Coco : les internautes à la recherche d'un remplaçant - Accueil - Réseaux sociaux
- Equivalent zone de telechargement - Accueil - Outils
- Equivalent de microsoft office gratuit - Guide
5 réponses
Attendons confirmation mais je ne suis pas sur qu'il y a moyen avec une fonction php de supprimer quelque balises seulement.
Il faut tricher a mon avis, peut en faisant ton bbcode?
Il faut tricher a mon avis, peut en faisant ton bbcode?
Ca parait pas très compliqué à coder, on parcourt notre chaine, et on supprime tout ce qui se trouve entre des chevrons (chevrons y compris).
Non ? Bon y'a encore quelques trucs a prévoir, mais dans l'idée c'est ça :)
Non ? Bon y'a encore quelques trucs a prévoir, mais dans l'idée c'est ça :)
Oui tu dosi pouvoir faire comme ca je vais jeter un oeil de mon coté en attendant d'autres reponses.
J'ai fait un ptit truc qui vide ce qui se trouve entre des balises < et > !
Bon, y'a encore des choses à revoir ou implémenter (une liste blanche des balises à accepter) mais je pense qu'elle est opérationnelle là.
Bon, y'a encore des choses à revoir ou implémenter (une liste blanche des balises à accepter) mais je pense qu'elle est opérationnelle là.
function filtrerChevrons($chaine) { $debut = $fin = -1; for ($i=0 ; $i<strlen($chaine) ; $i++) { if ($chaine[$i] == '<') $debut = $i; else if ($chaine[$i] == '>') $fin = $i; if (($debut != -1) && ($fin != -1)) { $longueur = $fin - $debut + 1; $chaine_buffer = substr($chaine, $debut, $longueur); if (strpos($chaine_buffer, '/')) $remplacement = '< />'; else $remplacement = '< >'; $chaine = substr_replace($chaine, $remplacement, $debut, $longueur); $debut = $fin = -1; } } return $chaine; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En fait, c'est pas la solution idéale niveau sécurité (pas étonnant je dois dire :) ).
L'utilisateur peut par exemple rentrer <strong<>>texte en gras</strong</>> et la fonction fait planter le chargement de la page !
Il y a clairement un soucis avec le strlen de la chaine dans une boucle for alors que la chaine est de taille variable...
On peut régler ce soucis en donner un plafond fixe à la boucle for avec $plafond=strlen puis en utilisant $plafond dans la boucle. J'ai testé, ça résout bien ce pb mais j'ai peur qu'il y en ai beaucoup d'autres des pb !
Du coup, je vais rester sur un htmlspecialchars, tant pis si c'est moche, ou moins c'est bien securisé (je crois).
L'utilisateur peut par exemple rentrer <strong<>>texte en gras</strong</>> et la fonction fait planter le chargement de la page !
Il y a clairement un soucis avec le strlen de la chaine dans une boucle for alors que la chaine est de taille variable...
On peut régler ce soucis en donner un plafond fixe à la boucle for avec $plafond=strlen puis en utilisant $plafond dans la boucle. J'ai testé, ça résout bien ce pb mais j'ai peur qu'il y en ai beaucoup d'autres des pb !
Du coup, je vais rester sur un htmlspecialchars, tant pis si c'est moche, ou moins c'est bien securisé (je crois).
https://www.php.net/manual/fr/function.strip-tags.php