Rails 3 HTML转义和所见即所得编辑器- HTML显示在视图中



我读过http://yehudakatz.com/2010/02/01/safebuffers-and-rails-3-0/和http://asciicasts.com/episodes/204-xss-protection-in-rails-3,我很困惑。我已经尝试了在asciicasts关于转义的解决方案,然后键入内容为html_safe。我不知道我做错了什么。

我使用的是WYSIWYG编辑器,它使用Content更新Post。

def create
@post = Post.new(params[:post])
respond_to do |format|
  if @post.save
    format.html { redirect_to(@post, :notice => 'Post was successfully created.') }
  else
    format.html { render :action => "new" }
  end
end

结束非常新颖。现在,当我输入一些内容时,例如<p>hello, world</p> ",那个确切的字符串出现在我的视图中(我使用的是partial, fwiw)。

<%= scrub post.content %>

我的application_helper。Rb文件有这个方法:

def scrub(content)  
 "<strong>#{h(content)}</strong>".html_safe  
end
当我输入" <script>mal</script> "时,

将转义脚本。为什么HTML会显示在视图上?下面是它在视图中的样子:

<p>hello, world &lt;script&gt;mal&lt;/script&gt;</p>
谁能给我指个正确的方向?我想让用户做简单的内容格式化,网站将显示呈现的HTML(像这个网站),但保持自己安全的脚本。

听起来您可能想看看sanitize,它有三种内置模式,并且是可定制的。

试着把.html_safe放在它的末尾。当我为自己寻找解决方案时,我找到了这个答案。(对不起,我意识到这是一个老问题。但对其他人来说)

Rails 4 WYSIWYG Bootsy不显示格式

最新更新