2010-06-16 7 views
13

Je souhaite autoriser les utilisateurs d'une application Web que je construis à écrire leur propre CSS afin de personnaliser leur page de profil.Assainissement de CSS dans Rails

Cependant, je suis au courant de cette ouverture pour de nombreux risques de sécurité, à savoir background: url ('javascript: alert ("Got cookies!" + Document.cookies')

D'où je cherche. solution pour désinfecter le CSS tout en permettant autant de fonctionnalités CSS que possible pour mes utilisateurs

Donc, mes questions si quelqu'un connaît quelqu'un d'un bijou ou un plugin pour gérer cela? Je ai déjà googlé mon cerveau si tous les conseils Rails a un désinfectant css intégré

+0

curieux, comment allez-vous stockez votre CSS? dans la base de données ou en tant que fichier pour chaque utilisateur? –

+0

Wow .. fou que vous pouvez exécuter javascript à partir de CSS comme ça. Aucune idée de comment le résoudre si - désolé! – zaius

+0

Shripad K: Je vais stocker le CSS dans la base de données. zaius: Yup! Consultez cette page: http://guides.rubyonrails.org/security.html#css-injection – Erik

Répondre

7

Voir http://apidock.com/rails/ActionView/Helpers/SanitizeHelper/sanitize_css et son parent http://apidock.com/rails/ActionView/Helpers/SanitizeHelper/sanitize

> ActionController::Base.helpers.sanitize_css('background:#fff') 
=> "background: #fff;" 
> ActionController::Base.helpers.sanitize_css('javascript:alert("garr");') 
=> "" 
+0

Ok, merci! Mais si je comprends bien, cette méthode est seulement utilisée pour assainir un attribut de style sur un élément HTML. Il ne peut pas être utilisé pour désinfecter une feuille de style entière ...? – Erik

+0

Il devrait être juste le même - une ligne ou une pile de lignes ... ce ne sera pas grave. – mylescarrick

+1

Il ne gère pas la feuille de style entière. – Habax

1

Il y a aussi un code appelé css_file_sanitize: https://github.com/courtenay/css_file_sanitize

comparant aux Rails commande sanitize Je trouve que les deux utilisent des expressions régulières pour dépouiller les parties indésirables du CSS .

est ici la source pour css_file_sanitize: https://github.com/courtenay/css_file_sanitize/blob/master/lib/css_sanitize.rb

est ici la source Rails sanitize: https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb

Questions connexes