2

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

这是它的工作原理。

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

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

@import breakpoint-slicer

html
  +from(3)
    background-color: pink

问题

  1. 让用户导入任何东西是否安全?当导入 SASS 加载路径之外的扩展时,SASS 不会编译并引发错误。但是 SassMeister 的作者 JedFoster认为这种行为是一个性能和安全漏洞,并让 SassMeister 注释掉手动导入。为什么?

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

4

0 回答 0