我正在使用Redcarpet在一个由用户介绍的网页数据中呈现。
我发现用户很容易引入恶意HTML代码。
我正在尝试不同的Redcarpet初始化选项,以防止在输出中呈现任何可能的恶意代码,但没有任何操作:
尝试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"发布于 2021-06-23 13:53:24
这些选项是呈现器的选项,而不是解析器的选项,因此需要将它们传递给呈现器,然后将配置的呈现器传递给解析器,例如:
markdown =
Redcarpet::Markdown.new(
Redcarpet::Render::HTML.new(escape_html: true),
# other parser options here, e.g.
autolink: true
)https://stackoverflow.com/questions/68099005
复制相似问题