安全的ERB语言?

时间:2009-11-11 16:09:14

标签: ruby-on-rails security templates

我想知道是否有重新组装ERB的安全模板。 ERB非常容易使用,但在CMS中使用它的致命部分是过度强大的访问(你可以在几秒钟内写出一些非常令人讨厌的东西......)所以我想知道是否有任何机会这种语言存在。

请我不要半径/液体......这样写延伸太​​麻烦了,模板语法本身就不是我的一杯茶...如果可能的话,我想避免它。

更新:这不完美(因为它不是erb)但似乎比Liquid更好: http://github.com/scottpersinger/laminate

你必须使用Lua作为你的模板,但Lua已经比尝试使用液体要好得多(这使得你无法使用简单的赋值语法......)

3 个答案:

答案 0 :(得分:3)

您应该考虑Handlebars.rb。它“使用therubyracer绑定到Handlebars.js的实际JavaScript实现,以便您可以从ruby中使用它。”

以下是他们的示例代码:

require 'handlebars'
handlebars = Handlebars::Context.new
template = handlebars.compile("{{say}}{{what}}")
template.call(:say => "Hey", :what => "Yuh!") #=> "Hey Yuh!"

答案 1 :(得分:2)

虽然你写了“请我不要半径/液体”,但我不明白你的不情愿。只需转到Liquid页面,看看它有多容易:

gem install liquid

以下是一个示例代码段:

<ul id="products">
  {% for product in products %}
    <li>
      <h2>{{ product.title }}</h2>
      Only {{ product.price | format_as_money }}

      <p>{{ product.description | prettyprint | truncate: 200  }}</p>
    </li>
  {% endfor %}
</ul>

而且,使用它:

Liquid::Template.parse(template).render 'products' => Product.find(:all)

答案 2 :(得分:2)

您还应该考虑Mustache

Mustache.render("Hello {{planet}}", :planet => "World!")
=> "Hello World!"