Break your xss breach bitch ! [EDIT du 30 septembre]
Tous ceux qui ont le triste privilège de relire mes snipètes vous le diront, à force de ne coder que pour mon usage personnel, je n'ai pas appris à me méfier des utilisations malhonnêtes des sites et la faille XSS est en quelque sorte devenue ma marque de fabrique (spécial wink to JérômeJ entre autres ).
Ce désolant constat posé, j'ai commencé un travail sur moi-même et m'efforce de sécuriser les choses les plus évidentes à coup de htmlentities ou hmltspecialchars ...
Toutefois, et afin de tempérer le légitime engouement pour ces fonctions, il faut bien reconnaître que parfois, on veut bien sécuriser mais on aimerait tout de même conserver le balisage html, ou alors, on aimerait bien qu'en cas de balisage (volontaire ou pas) on ne se retrouve pas avec un texte tout moche qui apparaisse AVEC les balises html pour cause d'entités...
Je vous propose une petite fonction, à améliorer sans doute, qui permettra:
- de sécuriser une chaine,
- de sécuriser un tableau, même multidimensionnel,
- de préciser le résultat que vous souhaitez obtenir
Il suffit d'appeler la fonction secure pour virer ce qui peut s'avérer dangereux. Le second argument de cette fonction spécifie le niveau d'agressivité de la suppression:
- 0 (valeur par défaut) : elle vire tout balisage par un strip_tags et ne retrourne que le texte brut, ce qui est utile pour éviter de voir apparaître le balisage dans un titre ou un bouton par exemple...
- 1 : seuls les balises script et javascript: ainsi que les js attachés aux évènements onclick etc sont supprimés... On conserve donc le balisage html normal.
- 2: on sécurise par un htmlspecialchars, ce qui aura pour effet collatéral de laisser apparaître les tags html.
En conclusion, je préciserais tout de même que le paramètre 1 de cette fonction ne protègera pas d'un code malicieux inline implanté dans un évènement, comme par exemple:
echo secure('<a href="http://www.warriordudimanche.net/test.htm" onclick="alert(\'\')">yo!</a>',1);
Il faudra, pour être sûr de soi, mettre 0 ou 2 à la place du 1.
Désormais, cette fonction supprime directement le code inline en même temps que les balises <script> et javascipt: .
Attends, c'est quand même pas TOI qui vas nous filer des trucs contre les failles XSS, si ?!
Ce qui m'étonne le plus, pour ma part, c'est que tu saches épeler XSS...
Allez, ramasse tes dents et ton air con pis barre-toi.
❝ 9 commentaires ❞
Fil RSS des commentaires de cet article
✍ Écrire un commentaire
les commentaires relevant du SPAM seront filtrés et dégagés direct...