Javascript 清理Rails中的CSS

Javascript 清理Rails中的CSS,javascript,ruby-on-rails,css,security,Javascript,Ruby On Rails,Css,Security,我想允许我正在构建的web应用程序的用户编写他们自己的CSS,以便自定义他们的个人资料页面 然而,我意识到这会带来许多安全风险,例如背景:url('javascript:alert(“Got your cookies!”+document.cookies') 因此,我正在寻找一个解决方案来清理CSS,同时仍然允许尽可能多的CSS功能为我的用户 所以我的问题是,如果有人知道一个gem或插件来处理这个问题?我已经用谷歌搜索了我的大脑,所以任何提示都会非常感谢!Rails有一个内置的css消毒剂 请参

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

然而,我意识到这会带来许多安全风险,例如背景:url('javascript:alert(“Got your cookies!”+document.cookies')

因此,我正在寻找一个解决方案来清理CSS,同时仍然允许尽可能多的CSS功能为我的用户


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

Rails有一个内置的css消毒剂

请参阅及其父级


还有一些代码称为css_file_sanitize:

将它与Rails
sanitize
命令进行比较,我发现两者都使用正则表达式来去除CSS中不需要的部分

以下是css\u文件\u清理的源代码:


以下是Rails的源代码:sanitize:

只是好奇,你是如何存储CSS的?在数据库中还是作为每个用户的文件?哇..疯狂的是你可以从CSS中执行javascript。但是不知道如何解决它-抱歉!Shripad K:我会将CSS存储在数据库中。zaius:是的!查看此页面:好的,谢谢!但正如我所说的理解它此方法仅用于清理HTML元素上的样式属性。它不能用于清理整个样式表…?它应该是相同的-一行或一堆行…这无关紧要。它不处理整个样式表。
full\u stylesheet.gsub(/\{([^}]*)\}/m){{'+ActionController::Base.helpers.sanitize\u css($1)+'}';}
就足够了。
> ActionController::Base.helpers.sanitize_css('background:#fff')
=> "background: #fff;" 
> ActionController::Base.helpers.sanitize_css('javascript:alert("garr");')
=> ""