Rails Gem sanitize - 如何将白名单和

AnA*_*ice 10 gem ruby-on-rails sanitize ruby-on-rails-3

现在我们正在使用sanitize gem:https://github.com/rgrove/sanitize

问题是如果你输入" hello & world"sanitize将数据保存在DB中:

hello & world 
Run Code Online (Sandbox Code Playgroud)

你怎么能将白名单列入白名单&.我们希望清理删除所有可能的恶意html和JS /脚本标记.但是我们可以使用&符号.

想法?谢谢

Uni*_*key 6

Sanitize 始终会将输出内容转换为有效 html/xhtml 的 html 实体。

我可以确定的最好方法是过滤输出

Sanitize.fragment("hello & world").gsub('&','&') #=> "Hello & world"
Run Code Online (Sandbox Code Playgroud)

  • 这将解决 & 字符,但不会扩展到 html 引擎使用的将转换为实体的所有各种字符。试图跟踪所有这些也会让人头疼。@agustin 下面的答案是一个更好的解决方案 (2认同)