html – Ruby on Rails:使用sanitize helper在代码块内部标记’<'

我试图在Rails中转义用户生成的内容.我使用raw with sanitize和raw helpers来过滤这样的内容:
raw(sanitize(code,:tags =>   ['<','h2','h3','p','br','ul','ol','li','code','pre','a'] ))

内容中允许提及的标签列表.

问题是当我尝试用这样的SQL查询测试它时:

mysql -u sat -p -h localhost database <  data.sql

在pre和code块中,它会删除小于(<)符号后的所有内容. 请帮我弄清楚这样做的方法.

解决方法

我不相信这可以使用Rails中的默认清理方法.

而是尝试使用Sanitize gem(https://github.com/rgrove/sanitize)

require 'sanitize'

allowed_elements = ['h2','a']
code             = "<pre>mysql -u sat -p -h localhost database < data.sql</pre>"

Sanitize.fragment(code,elements: allowed_elements)
# => <pre>mysql -u sat -p -h localhost database &lt; data.sql</pre>

要使用此功能将已清理的内容保存到数据库,请在模型中添加一个before_save过滤器,该模型对用户生成的内容进行清理并存储结果,例如:

class MyModel < ActiveRecord::Base 
  ALLOWED_ELEMENTS = ['h2','a']

  before_save :sanitize_code

  private

  def sanitize_code
    self.code = Sanitize.fragment(code,elements: ALLOWED_ELEMENTS)
  end
end

当您输出内容时,您只需要使用原始视图助手,例如

<%= raw @instance.code %>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


html5中section的用法
span标签和p标签的区别
jsp文件和html文件的区别是什么
span标签和div的区别
html颜色代码表大全
span标签的作用是什么
dhtml的主要组成部分包括什么
html编辑器哪个软件好用
span标签属于什么样式标签
html文件乱码怎么办
html怎么读取json文件
html文件打开乱码怎么恢复原状
html怎么链接外部css
html文件怎么保存到本地
html怎么链接css文件
html和css怎么连接
html和css怎么关联
html文件怎么保存到一个站点
html文件怎么写
html出现乱码怎么解决