在线编译SASS的服务:允许用户手动导入Compass扩展是否安全?

时间:2013-04-30 06:12:11

标签: ruby security sinatra sass compass-sass

我正在创建另一个HTML / CSS小提琴网络应用程序。它基于Sinatra,支持SASS和Compass扩展。

这是它的工作原理。

1)需要指南针和扩展:

require 'compass'
require 'singularitygs'
require 'breakpoint-slicer'

2)将Compass加载路径添加到Sass类:

Compass.sass_engine_options[:load_paths].each do |path|
  Sass.load_paths << path
end

此代码借鉴SassMeister

3)使用SASS接收AJAX请求,编译并返回CSS:

post '/compile-sass' do
  sass = params[:sass]

  begin
    sass(sass.chomp, {:style => :nested, :quiet => true})
  rescue Sass::SyntaxError => e
    status 200
    e.to_s
  end if sass
end

有点非常简单的功能。用户必须手动提供SASS代码@import任何支持的Compass扩展:

@import breakpoint-slicer

html
  +from(3)
    background-color: pink

问题

  1. 允许用户导入任何内容是否安全?当导入SASS加载路径之外的扩展时,SASS将不会编译并抛出错误。但是,SassMeister的作者JedFoster considers这样的行为是一个性能和安全漏洞,并使SassMeister评论出手动导入。为什么呢?

  2. 在给定的代码中有什么可以改进的吗?

0 个答案:

没有答案