2010-07-29 2 views
1

J'ai une page avec deux textareas, où les utilisateurs enregistrés peuvent les remplir avec des codes HTML. Le premier a TinyMCE (donc HTML est nettoyé), mais pas l'autre, puisque je m'attends à ce que le code soit inséré comme des codes intégrés d'autres sites (principalement des sites qui fournissent des cartes, par exemple Google Maps, MapMyRace.com, etc.) . Mais le problème est que ces autres sites peuvent fournir des étiquettes différentes, pas seulement <embed> ou . Donc, je ne peux pas enlever les étiquettes parce que je pourrais alors décaper les étiquettes que je ne connaissais pas d'autres sites fournis. Je vais enregistrer le HTML dans ces deux zones de texte dans ma base de données, pour être récupéré et affiché en tant que parties de certaines autres pages.Nettoyage HTML à partir de textarea

Avez-vous des suggestions pour améliorer la sécurité de cette configuration? Ou devrais-je refuser l'entrée libre de HTML dans la 2ème zone de texte? (Ou .. Je laisse les utilisateurs cocher une case à cocher en disant «J'accepte la pleine responsabilité du comportement du code Je suis INSERTION DE » .. LOL)

Votre opinion est très appréciée :)

Merci

Répondre

1

La réponse courte est: le HTML libre n'est pas sécurisé et doit être évité. Rien n'empêche votre utilisateur de créer un iframe qui redirige l'utilisateur vers une page nuisible ou de mettre des annonces sur votre page ou de dégrader votre site.

Mon approche préférée à ce problème est de permettre à l'utilisateur de coller un lien (pas le code iframe "incorporer sur la page") dans une zone de texte. Ensuite, j'utilise regex pour identifier le lien collé (youtube, Bing maps, ...) et je crée le HTML à partir du lien collé, ce qui n'est pas trop complexe pour la plupart des fournisseurs d'iframe. C'est beaucoup plus de travail pour vous, et cela restreint les API que vous pouvez mettre sur votre page, mais c'est sécurisé.

1

Le fait de laisser vos utilisateurs utiliser du code HTML arbitraire est dangereux. Vous voudrez peut-être avoir une liste noire et blanche de tags que vous interdisez et autorisez (respectivement).