gpt4 book ai didi

ruby-on-rails - 是否有必要添加缺失的结束标记作为清理 HTML 以防止 XSS 攻击的一部分?

转载 作者:数据小太阳 更新时间:2023-10-29 08:05:56 25 4
gpt4 key购买 nike

我正在使用 Sanitize gem 来禁止可用于 XSS 攻击的 HTML 代码。作为副作用,HTML 也得到了清理。添加缺少的结束标记。这通常没问题,但在许多情况下它会改变内容的格式。最终,我想完全清理 HTML,但不想将此作为保护网站免受 XSS 攻击的一部分。

那么,缺少结束标记(例如 </font> )是潜在的 XSS 攻击吗?如果没有,我如何阻止 Sanitizer 也尝试清理 HTML?

最佳答案

Sanitize建立在 Nokogiri 之上:

Because it’s based on Nokogiri, a full-fledged HTML parser, rather than a bunch of fragile regular expressions, Sanitize has no trouble dealing with malformed or maliciously-formed HTML, and will always output valid HTML or XHTML.

强调我的。所以答案是否定的,你必须修复损坏的 HTML。

Nokogiri 必须修复 HTML 以便正确解释它并构建 DOM,然后 Sanitize 将修改 Nokogiri 构建的 DOM,最后修改后的 DOM 将被序列化以获取您要存储的 HTML .

如果您浏览 Sanitize 源,您会发现所有内容最终都会经过 clean!。这将使用 Nokogiri 的 to_htmlto_xhtml方法:

if @config[:output] == :xhtml
output_method = fragment.method(:to_xhtml)
output_method_params[:save_with] = Nokogiri::XML::Node::SaveOptions::AS_XHTML
elsif @config[:output] == :html
output_method = fragment.method(:to_html)
else
raise Error, "unsupported output format: #{@config[:output]}"
end

result = output_method.call(output_method_params)

因此,您得到的是 Nokogiri 版本的 HTML,而不仅仅是删除了不良部分的 HTML。

关于ruby-on-rails - 是否有必要添加缺失的结束标记作为清理 HTML 以防止 XSS 攻击的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7069848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com