有些程序接受来自一个不受信任用户的数据,并将该数据传递给第二个用户;第二个用户的应用程序可能会以对第二个用户有害的方式处理该数据。 这对于 Web 应用程序来说是一个特别常见的问题,我们将其称为“跨站恶意内容”问题。 简而言之,您不能在不检查、过滤或编码的情况下接受输入(包括任何表单数据)。 更多信息,请参阅第 7.15 节。
从根本上说,这意味着必须过滤所有 Web 应用程序输入(因此会删除可能导致此问题的字符)、编码(因此会以防止该问题的方式编码可能导致此问题的字符)或验证(以确保只有“安全”数据通过)。 过滤和验证通常应在输入时完成,但编码可以在输入或输出时完成。 如果您只是在未经分析的情况下传递数据,那么最好在输入时对数据进行编码(这样就不会忘记),但如果您正在处理数据,则有一些理由支持在输出时进行编码。