Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在RubyonRails中清理用户生成的html代码_Html_Ruby On Rails_Sanitization - Fatal编程技术网

如何在RubyonRails中清理用户生成的html代码

如何在RubyonRails中清理用户生成的html代码,html,ruby-on-rails,sanitization,Html,Ruby On Rails,Sanitization,我将用户生成的html代码存储在数据库中,但是有些代码被破坏了(没有结束标记),因此当这些代码破坏整个页面的呈现时 我如何使用RubyonRails防止这种行为 谢谢我的google fu显示出奇的少点击,但这里是最热门的一个:) 尝试在erb模板中使用h()escape函数进行清理。这应该可以做到这一点使用合适的HTML解析器来实现这一点并不难,例如,它可以作为处理方法的一部分执行清理: bad_html = '<div><p><strong>bad<

我将用户生成的html代码存储在数据库中,但是有些代码被破坏了(没有结束标记),因此当这些代码破坏整个页面的呈现时

我如何使用RubyonRails防止这种行为


谢谢

我的google fu显示出奇的少点击,但这里是最热门的一个:)


尝试在erb模板中使用h()escape函数进行清理。这应该可以做到这一点

使用合适的HTML解析器来实现这一点并不难,例如,它可以作为处理方法的一部分执行清理:

bad_html = '<div><p><strong>bad</p>'

puts Nokogiri.fragment(bad_html).to_s
# <div><p><strong>bad</strong></p></div>
bad\u html='bad

' 将Nokogiri.fragment(坏的html) #坏的


正确解析后,您应该拥有完全平衡的标记。

签出,一个基于Nokogiri的HTML清理库。这还将删除可能在页面上插入恶意脚本或嵌入对象的潜在不安全HTML。您还应该清除样式块,这可能会弄乱页面上的标记。

这只会转义HTML,不会修复它
x
只是变成
bx
而不是
x