为什么要将类名列入白名单?

信息安全 Web应用程序 html 白名单 css
2021-09-07 21:03:25

我正在使用Accept known good验证策略来清理用户输入(富 HTML),并使用 3rd 方组件来执行此操作。

默认情况下,该组件要求明确列出每个允许的类名,但也有一个复选框来暂停此规则(即,每个类名都将被接受)。此复选框的帮助文本说:

绕过此规则可能会导致安全漏洞。仅将此过滤器授予受信任的角色。

我理解通过选中该框,我将允许用户输入,例如:

<div class="exploit">…</div>

但是,我想不出用什么来代替“exploit”,这可能是一个安全漏洞。

谁能向我解释为什么我需要将类名列入白名单。

1个回答

问题是当用户指定的 HTML 与您自己的 HTML 和应用程序逻辑一起包含在同一页面上时。应用程序逻辑通常取决于 HTML 中特定元素的内容或位置,这些元素是根据 id 或类名选择的。如果您允许用户指定任何类名,攻击者可能能够生成与您的应用程序逻辑中使用的类名相同的内容。这可能会严重混淆可能导致安全问题的应用程序逻辑。