2010-06-16 10 views
13

Desidero consentire agli utenti di un'app Web che sto costruendo di scrivere il proprio CSS per personalizzare la pagina del profilo.Sanitizing CSS in Rails

Comunque sono a conoscenza di questa apertura per molti rischi per la sicurezza, vale a dire di fondo: url ('javascript: alert ("Got i cookie!" + Document.cookies')

Quindi sto cercando una. soluzione per disinfettare il CSS pur consentendo il maggior numero possibile di funzionalità CSS per i miei utenti

Quindi le mie domande se qualcuno sa di un gioiello o di un plugin per gestirlo? sarebbe molto apprezzato!

+0

solo curioso, come stai riporre il CSS? nel database o come file per ogni utente? –

+0

Wow .. pazzo che tu possa eseguire javascript da CSS come quello. Non ho idea di come risolverlo però - scusa! – zaius

+0

Shripad K: memorizzerò il CSS nel database. zaius: Sì! Dai un'occhiata a questa pagina: http://guides.rubyonrails.org/security.html#css-injection – Erik

risposta

7

Rails ha un disinfettante css incorporato

Vedi http://apidock.com/rails/ActionView/Helpers/SanitizeHelper/sanitize_css e la controllante 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, grazie! Ma a quanto ho capito questo metodo è usato solo per disinfettare un attributo di stile su un elemento HTML. Non può essere usato per disinfettare un intero foglio di stile ...? – Erik

+0

Dovrebbe essere lo stesso - una linea o una pila di linee ... non importa. – mylescarrick

+1

Non gestisce l'intero foglio di stile. – Habax

1

C'è anche un po 'di codice chiamato css_file_sanitize: https://github.com/courtenay/css_file_sanitize

confrontandola con la Rails sanitize comando trovo che entrambi usano le espressioni regolari per togliere le parti indesiderate del CSS .

Ecco la fonte per css_file_sanitize: https://github.com/courtenay/css_file_sanitize/blob/master/lib/css_sanitize.rb

Ecco il sorgente di Rails sanitize: https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb

Problemi correlati