【发布时间】:2016-07-22 03:23:13
【问题描述】:
我试图在 Rails 中转义用户生成的内容。我使用带有 sanitize 和 raw 助手的 raw 来过滤如下内容:
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 块中,它会删除小于 (
请帮我想办法做到这一点。
【问题讨论】:
-
我无法在控制台中重现您的问题。也许您应该显示您传递给
sanitize的确切内容。此外,“ -
这一行:“
mysql -u sat -p -h localhost database
”将只导致:“mysql -u sat -p -h localhost数据库”,并且结束的 pre 标记也被删除。这会导致奇怪的标记。 -
我认为这与数据在数据库中的存储方式有关。您能建议存储和呈现源代码的最佳方式吗?
-
嗯,渲染是您一直在问的问题,但就存储而言,我不明白您为什么要使用比足够大的字符串类型更复杂的东西。如果您的数据库破坏了您的内容,您应该能够通过前后比较来检测到这一点。
-
不,不是。这只是渲染问题。我正在使用 raw 和 sanitize 助手: raw(sanitize(code, :tags => ['h2','h3','p','br','blockquote', 'ul','ol','li ','强','代码','pre','a']))。它工作正常,除了遇到'
标签: html ruby-on-rails escaping sanitize