Dans de nombreux sites de plusieurs de mes sites, les utilisateurs sont autorisés à entrer du texte formaté en WYSIWYG ou en texte brut avec des balises. Naturellement, une telle entrée est nettoyée pour les menaces de sécurité, mais elle n'est pas dépouillée des balises et n'est pas entièrement codée en entité. Quelque chose comme <p>hello world</p>
finit par revenir à l'utilisateur final comme <p>hello world</p>
.Forcer la fermeture de balises en texte dynamique
La plupart des WYSIWYG sont assez intelligents pour nettoyer le XML avant de retourner le contenu au formulaire, mais les requêtes POST manuelles, les zones de texte non-WYSIWYG et les utilisateurs non-JS ne seront pas soumis à cette attraction. . Il n'y a donc rien pour empêcher un utilisateur d'entrer <a href="/">
, transformant le reste de la page en un lien.
Quelle est la meilleure façon de traiter cela?
Cela semble raisonnable, même si je préfère une approche qui l'assainit une seule fois et met en cache le code HTML. De toute façon, pouvez-vous recommander un outil qui fait cela pour PHP et/ou Rails? –
Pas vraiment. Ni PHP ni Rails ne sont ma spécialité. Il y a beaucoup de questions sur les analyseurs syntaxiques HTML pour différentes langues, alors je vous suggère de faire une recherche ou de poser une nouvelle question. Bien que la désinfection HTML soit plus facile et plus fiable sur un DOM, si vous en avez une tierce avec une bonne réputation, il n'est pas nécessaire de basculer. Je voulais juste souligner à quel point il est bon d'assainir votre HTML. Une fois que le texte de l'utilisateur a été soumis à un cycle d'analyse/sérialisation, vous pouvez mettre en cache le résultat. – Alohci