gpt4 book ai didi

ruby-on-rails - 如何允许 标签通过 rails 4 清理?

转载 作者:行者123 更新时间:2023-12-02 09:28:58 24 4
gpt4 key购买 nike

我一直在 Rails 4 应用程序中使用 sanitize 方法来清理显示用户生成的 html 的页面,以防止脚本注入(inject)等不安全的事情。所以我有一个看起来像这样的 View :

sanitize @user_input

现在,当用户输入带有源标签的视频标签时,我遇到了问题,如下所示:

<video><source src="foo.bar"></video>

不幸的是,sanitize 似乎正在剥离源标签,因此视频不再有效。我如何使用 sanitize 以便它允许源标记?另外,如何获得允许/禁止的标签列表?了解引擎盖下发生的事情会很棒。

为了完全清楚,我希望能够将源标记添加到白名单中。当我在 sanitize 的参数中将其指定为允许的标签时,它会删除白名单标签的所有先前默认值。例如,我仍然希望允许使用 a、h1 等默认标签。

如何将源添加到白名单而不是完成替换?

最佳答案

在深入研究源代码后,我发现允许的默认元素列表是基于 Loofah 的 WhiteList Sanitize

  • 默认标签:Loofah::HTML5::WhiteList::ALLOWED_ELEMENTS_WITH_LIBXML2
  • 默认属性:Loofah::HTML5::WhiteList::ALLOWED_ATTRIBUTES

所以要添加<source>对于默认列表,您可以执行以下操作:

default_tags = Loofah::HTML5::WhiteList::ALLOWED_ELEMENTS_WITH_LIBXML2.add('source')
default_attributes = Loofah::HTML5::WhiteList::ALLOWED_ATTRIBUTES
sanitize @user_input, tags: default_tags, attributes: default_attributes

关于ruby-on-rails - 如何允许 <source> 标签通过 rails 4 清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35070433/

24 4 0