6

我们的遗留应用程序最初设计为允许为可定制页面存储任何 html 标签。此类页面的想法是存储客户需要的任何 html,然后在某些时候有可能呈现此 html 数据。

这种方法允许用户存储任何 XSS。我们当前的目标是定义和执行不允许存储任何 XSS 的策略。

我们根据一些预定义的规则研究了几种能够清理 html 的方法:

但是这两种方法都是基于消毒而不是验证。所以基本场景可能如下所示:

  1. 用户输入一些数据来输入
  2. 用户输入被清理并检查与原始(初始 - 步骤 1)用户输入是否相等。
  3. 如果有任何差异,则认为验证失败。

这种方法适用于新数据。如果是遗留数据,我们会遇到几个问题:

  1. 如果用户遗留数据包含禁止元素,用户将无法保存稍微修改过的 html 内容版本。
  2. 以下流程会使用户感到困惑:
    1. 用户编辑包含与新定义的策略有关的禁止标签/内容的旧数据。
    2. 用户替换所有内容并保存。
    3. 用户出于某种原因决定恢复到旧版本
    4. 不允许用户保存以前的版本,因为它包含禁止的标签/内容。

于是出现以下问题:

  1. 验证恶意 html 元素和 XSS 向量的用户输入的最佳方法是什么?
  2. 哪种方法可用于解决遗留数据的上述问题?
4

0 回答 0