Je sais que je peux utiliser la méthode d'assistance ActionView strip_tags
dans mes vues pour assainir la sortie, mais quel est le meilleur moyen de désinfecter l'entrée de l'utilisateur avant de la persister dans mon db? Dois-je trouver un moyen d'inclure l'assistant d'affichage dans mon contrôleur et de réutiliser la méthode strip_tags? Je pensais que les rails auraient quelque chose de globalement disponible pour faire quelque chose comme ça.Désinfecter l'entrée Entrée XSS et HTML dans les rails
Répondre
Qu'en est-il du plugin xss_terminate?
Pourquoi devez-vous nettoyer l'entrée de l'utilisateur?
En règle générale, tout ce dont vous avez besoin est un encodage/échappement rigoureux et contextuel de l'entrée de l'utilisateur chaque fois que vous l'imprimez ou l'intégrez dans un plus grand bloc de sortie.
Aucun sens laissant le code malveillant simplement assis dans votre base de données. Les vecteurs d'attaque multiples dans les applications Web sont déjà un lieu commun et cela semble juste une chose facile à résoudre, IMO. Défense en profondeur, tu sais? – phreakre
Rails 3 prend la bonne approche. Il html-échappe automatiquement tout ce qui (y compris les données entrées par l'utilisateur) en sortie dans le html, sauf les éléments spécifiques que le programmeur indique sont déjà html-safe. Rails 3 fait de la défense en profondeur, et cela de manière correcte et rigoureuse, avec des données échappées au bon endroit et au bon moment. – yfeldblum
désinfecte peut-être petit bijou: http://wonko.com/post/sanitize
Pourquoi voulez-vous désinfectez les entrées utilisateur? Cela n'a même pas de sens! Vous voulez toujours désinfecter (sortir) les sorties, pas les entrées, car la signification de la désinfection dépend du contexte dans lequel vous utilisez le contenu. Il n'existe pas de chaîne qui soit sûre dans n'importe quel contexte. Vous ne voulez pas qu'un groupe de chaînes mutilées dans votre base de données soit "sûr" dans n'importe quel scénario que votre application les utilise aujourd'hui, parce que demain, vous voudrez peut-être faire quelque chose de différent avec eux. Si votre couche de présentation fait la bonne chose (en échappant au contenu en fonction du contexte), tout va bien, peu importe le nombre de citations, d'antislashs ou d'instructions DROP TABLE qui s'y trouvent.
Dans certains cas, il est judicieux de "désinfecter" les entrées utilisateur avant de les stocker dans la base de données. Par exemple, si un utilisateur entre son nom de famille en tant que "
Smith
", cela n'a aucun sens de stocker la balise html dans la base de données. Dans ce cas, il est bon de supprimer la balise html avant d'enregistrer le nom de famille dans la base de données. –La question originale liée à l'injection (XSS et HTML), auquel cas je considère que la désinfection est * toujours * usée. Mais même si vous avez des déchets dans la ficelle, quelles sont vos chances que l'assainissement va trouver les ordures? Il est difficile pour un algorithme de déterminer quelle partie est et n'est pas un nom. Par exemple, quand est cette partie d'une entité HTML et quand est-ce qu'elle fait partie d'un nom comme "Smith & Wesson"? Bientôt, vous finissez avec ceci: http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ – Enno
- 1. Ruby on Rails et prévention XSS
- 2. Désinfecter les paramètres $ _GET pour éviter les attaques XSS et autres
- 3. Echapper à HTML dans Rails
- 4. Devrais-je désinfecter le balisage HTML pour un CMS hébergé?
- 5. Prévenir XSS dans les formulaires HTML à partir du site tiers
- 6. Rails éditant le HTML dans les vues
- 7. Entrée de texte enrichi dans Rails
- 8. XSS dans DataBinder.Eval
- 9. code Ruby Désinfecter ... pourquoi est et désinfecté
- 10. Comment mieux désinfecter l'entrée dans la webapp
- 11. Fonction de filtrage XSS en PHP
- 12. Contrôles utilisateur ASP.NET, ObjectDataSources et XSS
- 13. XML => HTML avec Hpricot et Rails
- 14. IE8 Filtre XSS Question
- 15. Désinfecter le texte codé en html (notation # décimal) de la sortie AntiXSS v3
- 16. Désactiver Markdown dans Rails?
- 17. Comment désinfecter l'entrée Erlang?
- 18. Empêche les tentatives XSS sur une application Web Tomcat/Struts 1 (sans code source)
- 19. entrée utilisateur Désinfecter destiné à la base de données en PHP
- 20. rendre la collection de partiels comme html dans les rails
- 21. Ajax Control Toolkit Éditeur contrôle - éviter les attaques XSS
- 22. Écriture du filtre XSS pour (X) HTML basé sur la liste blanche
- 23. jQuery Entrée et validation filigranées
- 24. et entrée combobox texte
- 25. Comment désinfecter les URI de titre avec PHP?
- 26. Librairies .NET pour désinfecter l'entrée?
- 27. Comment gérer XSS sur NVelocity
- 28. C#: Désinfecter les valeurs de texte XML avec XmlTextWriter?
- 29. Désactiver la sortie dans Rails
- 30. Oracle Text: Comment désinfecter l'entrée utilisateur
2 ans plus tard et deux downvotes sans commentaires - les commentaires aideraient au moins les choses plus clairement pour les autres utilisateurs. Note: au moment de la réponse, nous utilisions Rails 2 et les choses n'étaient pas aussi bonnes qu'elles le sont maintenant! –