2008-10-18 7 views
3

Quelle est la meilleure solution pour assainir la sortie HTML dans Rails (pour éviter les attaques XSS)?Désactiver la sortie dans Rails

J'ai deux options: plugin white_list ou méthode sanitize de Sanitize Helper http://api.rubyonrails.com/classes/ActionView/Helpers/SanitizeHelper.html. Pour moi jusqu'à aujourd'hui, le plugin white_list fonctionnait mieux et dans le passé, Sanitize était très buggé, mais dans le cadre du Core, il sera probablement en cours de développement et sera supporté pendant un certain temps.

Répondre

1

Je pense que la méthode d'assistance h fonctionnera ici:

<%= h @user.profile %> 

Cela échappera à crochets et donc neutraliser toute JavaScript intégré. Bien sûr, cela éliminera également tout formatage que vos utilisateurs pourraient utiliser.

Si vous voulez un formatage, regardez peut-être le marquage.

0

Personnellement, je pense que ce n'est pas une petite décision d'accepter une entrée HTML dans une application Web. Vous pouvez tester les balises blanches/listes noires autant que vous le souhaitez, mais à moins que vous testez pour la nidification correcte, quelqu'un pourrait entrer dans une série de balises de fermeture, par exemple

</td></tr></span></div> 

et vraiment mess avec votre mise en page. Je donnerais généralement aux gens quelque chose comme Textile pour entrer leur balisage, puisque je préfère passer mon temps à travailler sur la logique métier que l'analyse HTML. Bien sûr, si cette entrée de texte est plus fondamentale pour votre application (comme par exemple pour stackoverflow), alors vous devriez probablement accorder plus d'attention à la vôtre.

Questions connexes