Ruby,如何防止红毯在输出中渲染HTML代码



我正在使用红地毯在用户介绍的网页中渲染数据。

我看到用户很容易引入恶意HTML代码。

我正在尝试不同的红地毯初始化器选项,以防止任何可能的恶意代码在输出中呈现,但什么都不起作用:

正在尝试filter_html:

markdown =
Redcarpet::Markdown.new(
Redcarpet::Render::HTML,
filter_html: true
)
markdown.render("<style>style</style> <script>alert()</script>")
# => "<p><style>style</style> <script>alert()</script></p>n"

正在尝试scape_html:

markdown =
Redcarpet::Markdown.new(
Redcarpet::Render::HTML,
escape_html: true
)
markdown.render("<style>style</style> <script>alert()</script>")
# => "<p><style>style</style> <script>alert()</script></p>n"

这些是渲染器的选项,而不是解析器的选项,因此您需要将它们传递给渲染器,然后将配置的渲染器传递给解析器,例如:

markdown =
Redcarpet::Markdown.new(
Redcarpet::Render::HTML.new(escape_html: true),
# other parser options here, e.g.
autolink: true
)

相关内容

  • 没有找到相关文章

最新更新