2011-03-15 1 views
1

Je viens d'implémenter CKEditor pour la saisie de texte enrichi dans mon application et je pense que la possibilité pour un utilisateur de saisir quoi que ce soit pourrait constituer une menace pour la sécurité.Conséquences pour la sécurité de l'utilisation de CKEditor

Pour le moment, j'ai l'implémentation la plus simple - CKEditor se trouve dans un formulaire, entrée est enregistrée dans la base de données dans le cadre de update_attributes, et d'autres personnes peuvent voir la sortie html_safe.

D'une certaine manière, ce qui précède ne me semble pas bien, même si cela fonctionne. Ai-je raison de penser que cette approche comporte des risques? Existe-t-il un moyen plus sûr de bloquer une attaque via l'éditeur?

Répondre

1

Vous devez toujours prendre soin de désinfecter une entrée utilisateur. Dans votre cas, en supprimant toutes les balises HTML indésirables (comme, par exemple), peu importe d'où il vient.

html_safe n'est pas conçu pour supprimer du HTML ou désinfecter pour vous. Voir Yehuda Katz' article sur ActiveSupport::SafeBuffer. Il est destiné à empêcher le balisage "dangereux" en marquant une chaîne comme sûre, si elle l'est (et en l'encodant aux entités HTML autrement, pour la rendre sûre).

Il existe des assistants d'assainissement dans ActionView::Helpers::SanitizeHelper que vous pouvez utiliser pour nettoyer ce qui est affiché, mais vous souhaiterez peut-être le désinfecter avant de l'entrer dans la base de données.

Si vous supprimez la possibilité d'insérer CSS, Javascript ou un iframe, ça devrait aller. Si vous êtes paranoïaque à propos de ce que font vos utilisateurs, supprimez également les tags <img>. Et si vous êtes vraiment paranoïaque, vous devriez envisager d'utiliser Markdown, Textile ou autres.

+1

Salut fx_ - merci beaucoup pour votre réponse. Je l'ai dans Application.rb: 'config.action_view.sanitized_allowed_tags =% w (h1 h2 h3 h4 b i p u un pr div span p ul ol li strong frappe img)'. Est-ce que cela, combiné avec 'sanitize (@ notes.body)' déshabille CSS, JS, iframes, etc.? – sscirrus

+0

_Cette aide hygiénique codera html tous les tags et dépouillera tous les attributs qui ne sont pas spécifiquement autorisés._ - voir ['ActionView :: Helpers :: SanitizeHelpers # sanitize'] (http://apidock.com/rails/ActionView/ Helpers/SanitizeHelper/assainir) –

Questions connexes