我在清理包含脚本标记的文档时使用了我想要允许的所有标记的白名单,并使用了ActionView :: Helpers :: SanitizeHelper来帮助进行清理。我的问题是允许脚本标记显示在HTML源代码中,但脚本的内容将被删除。
我可以在没有对我的应用程序的这个特定部分进行消毒的情况下显示,但是我希望保持一致。
这是该消毒部分的行代码
#{sanitize @page.body, tags: t("sanitize.whitelist").split(/\s/), attributes: %w(id class style alt src href target)}
在我必须解决删除此部分的消毒之前,我们将不胜感激。
答案 0 :(得分:0)
我通常在config / application.rb中执行类似的操作
config.action_view.sanitized_allowed_tags = 'a', 'br'
然后,如果您需要为不同目的允许一组单独的标记:
config.action_view.sanitized_allowed_other_tags = ['a', 'br', 'script']
然后你可以这样做:
#{sanitize @page.body, tags: Rails.configuration.sanitized_allowed_other_tags, attributes: %w(id class style alt src href target)}
这可能不是最佳解决方案,但至少它允许您只需在一个地方更改允许的标签。