Javascript 如何呈现通过表单提交的HTML?
如何呈现通过表单提交的HTML 我正在Rails 4应用程序中构建一个文本编辑器。我正在使用javascript将可编辑内容中的数据传递到表单中,以保存到数据库中。到目前为止一切都很好 除了用户保存的文本外,还包括HTML。。。因此,我保存的内容如下所示:Javascript 如何呈现通过表单提交的HTML?,javascript,ruby-on-rails,ruby,html,contenteditable,Javascript,Ruby On Rails,Ruby,Html,Contenteditable,如何呈现通过表单提交的HTML 我正在Rails 4应用程序中构建一个文本编辑器。我正在使用javascript将可编辑内容中的数据传递到表单中,以保存到数据库中。到目前为止一切都很好 除了用户保存的文本外,还包括HTML。。。因此,我保存的内容如下所示: <header class="header" contenteditable="true"> This is a title </header> <article class="co
<header class="header" contenteditable="true">
This is a title
</header>
<article class="content" contenteditable="true">This is the body<br></article>
这是一个标题
这是主体
当我在#索引或#编辑中显示内容时,HTML将作为普通文本发布
如何使其呈现?在页面上显示HTML标记等的原因是,默认情况下,Rails会保护您免受恶意数据的攻击并转义HTML标记。你可以通过确保文本是“安全的”来解决这个问题。@bjhaid在评论中建议的方式(简单地使用
raw()
)对于用户提供的内容是不好的,因为它本质上只是信任内容——可以是任何内容,包括从用户获取数据或访问服务器的脚本标记
清理用户提供的内容的最佳方法是:
<%= sanitize(the_user_supplied_content) %>
另请参见。
对于用户提供的内容,请小心使用raw
。使用sanitize()更安全
helper。请参阅下面的答案。这更有意义。但是,sanitize似乎删除了contenteditable属性。是否有方法自定义允许的HTML代码或标记?是的,有一个配置参数。请参阅
# config/application.rb
config.action_view.sanitized_allowed_attributes = "my_new_attribute"