我正在使用红地毯在用户介绍的网页中渲染数据。
我看到用户很容易引入恶意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
)