我有一个文本区域,允许用户输入他们汽车的描述。
它保存为:text,当被调用时,我将通过ApplicationHelper渲染,如下所示:
module ApplicationHelper
def markdown(text)
renderer = Redcarpet::Render::HTML
@engine = Redcarpet::Markdown.new(renderer,
hard_wrap: true,
filter_html: true,
autolink: true,
no_intra_emphasis: true
)
@engine.render(text)
end
end
作为偏执狂,我试着在我的textarea中输入类似的内容。
Markdown.
__Nice.__
<%= @car %>
<script>
alert('damn');
</script>
虽然<%= @car %>
没有解析ruby代码,但脚本确实已执行。
在我看来:
<%= markdown(@car.description).html_safe %>
我想知道这是用redcarpet处理的正确方法;这种机制是否容易受到任何攻击,我该如何防止它?
最佳