【发布时间】:2014-03-04 14:25:41
【问题描述】:
我正在构建一个具有 HTML GUI 界面的应用程序,用于在容器 div 内创建、移动和编辑框 (div)。这些框在编辑时被分配内联样式,这些内联样式保存到数据库并在视图中输出:
<%= sanitize raw(@slide.content) %>
我想清理 HTML 本身,以避免有人入侵,例如,脚本标签,通过编辑保存框时发送到服务器的内容来发送它。
Rails 4 有一个辅助方法 sanitize,可通过类 ActionView::Helpers::SanitizeHelper 获得。当我将它与包含恶意<script> 标记的测试content 值一起使用时,脚本会被很好地删除。但是清理内容也会去除样式标签内对于框必要的 CSS 属性,例如 top、left、position 等。
在链接的文档中,声明sanitize 在遇到style 属性时会自动使用函数sanitize_css:
sanitize_css(style)
清理一段 CSS 代码。 sanitize 在遇到样式属性时使用。
我确实不想要sanitize 的这种行为。如何使用 sanitize_css 禁用清理以清理 HTML,而不清理 CSS?
【问题讨论】: