在Rails中清理CSS

时间:2010-06-16 07:09:10

标签: javascript ruby-on-rails css security

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

但是我知道这可能带来许多安全风险,我的背景是:url('javascript:alert(“得到你的饼干!”+ document.cookies')。

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

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

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:1)

还有一些名为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的来源sanitizehttps://github.com/rails/rails/blob/master/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb