Санирование CSS в Rails
Я хочу разрешить пользователям веб-приложения, которые я создаю, написать собственный CSS, чтобы настроить страницу своего профиля.
Однако я знаю об этом открытии для многих угроз безопасности, я e background: url ('javascript: alert ( "Получил ваши файлы cookie!" + document.cookies ").
Следовательно, я ищу решение для дезинфекции CSS, сохраняя при этом максимально возможную функциональность CSS для моих пользователей.
Итак, мои вопросы, если кто-нибудь знает о камне или плагине, чтобы справиться с этим? Я уже давно искал свои мозги, поэтому любые советы были бы действительно оценены!
Ответы
Ответ 1
Rails имеет встроенный дезинфицирующее средство css
См. http://apidock.com/rails/ActionView/Helpers/SanitizeHelper/sanitize_css и его родительский 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");')
=> ""
Ответ 2
Также есть код css_file_sanitize: https://github.com/courtenay/css_file_sanitize
Сравнивая его с командой Rails sanitize
, я нахожу, что оба используют регулярные выражения для выделения нежелательных частей CSS.
Здесь источник для css_file_sanitize: https://github.com/courtenay/css_file_sanitize/blob/master/lib/css_sanitize.rb
Здесь источник Rails sanitize
: https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb