如何呈现通过表单提交的HTML?
我正在使用Rails 4应用程序构建文本编辑器。我正在使用javascript将内容可编辑的数据传递到我的表单中以保存到数据库中。到目前为止都很好。
除了用户保存的文本外,还包括HTML ...所以我保存的内容如下所示:
<header class="header" contenteditable="true">
This is a title
</header>
<article class="content" contenteditable="true">This is the body<br></article>
当我在#index或#edit中显示内容时,HTML将作为普通文本发布。
如何让它渲染?
答案 0 :(得分:2)
当您在页面上显示时,您看到HTML标记等的原因是因为默认情况下,Rails可以保护您免受恶意数据的攻击并转义HTML标记。你可以通过确保文本安全&#34;来解决这个问题。拳头。 @bjhaid在评论中建议的方式(简单地使用raw()
对用户提供的内容不利,因为它基本上只信任内容 - 可能是任何内容,包括从用户处获取数据或获取数据的脚本标记访问您的服务器。
清理用户提供的内容的最佳方法是:
<%= sanitize(the_user_supplied_content) %>
sanitize帮助程序将删除危险的标记和属性,然后将该字符串标记为安全,以便其余内容可以通过非转义。
<强>更新强>
添加属性,以便sanitize帮助程序不会删除它:
# config/application.rb
config.action_view.sanitized_allowed_attributes = "my_new_attribute"