在Rails中清理CSS

我想允许我正在构建的Web应用程序的用户编写自己的CSS以自定义他们的个人资料页面。

但是我知道这种开放存在许多安全风险,即背景:url(’javascript:alert(“得到你的cookie!”+ document.cookies’)。

因此,我正在寻找一种清理CSS的解决方案,同时仍然为我的用户提供尽可能多的CSSfunction。

所以我的问题,如果有人知道一个gem或插件来处理这个? 我已经搜索过我的大脑,所以任何提示都会非常感激!

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");') => "" 

还有一些名为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