我想允许我正在构建的网络应用的用户编写自己的CSS,以便自定义他们的个人资料页面。
但是我知道这可能带来许多安全风险,我的背景是:url('javascript:alert(“得到你的饼干!”+ document.cookies')。
因此,我正在寻找一种清理CSS的解决方案,同时仍然为我的用户提供尽可能多的CSS功能。
所以我的问题是否有人知道一个宝石或插件来处理这个问题?我已经搜索过我的大脑,所以任何提示都会非常感激!
答案 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的来源sanitize
:https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb