0

是否有推荐的方法来转义 HTML 和 JSON?目前我正在使用来自Apache Commons Lang的StringEscapeUtils。在将数据放入我的数据库之前,我首先将输入字符串转发给一个方法,该方法首先转义 HTML,然后转义 JSON。该方法如下所示:

private static String escapeHTMLJSON(String string) {
    return escapeJson(escapeHtml4(string));
}

这种方法对危险的 HTML 和 JSON 有抵抗力吗?我想防止 XSS(跨站点脚本)。

4

1 回答 1

0

我已经看到了过滤输入和转义输出的建议。因此,大多数情况下,应用 JSON 编码和 HTML 编码是没有意义的,除非你正在做一些事情,比如在 HTML 属性中生成 JSON 数据。

在直接将值插入 HTML 元素的上下文中,转义 HTML 和 JSON 是安全的:

<p>[INPUT]</p>

或 JSON 字符串值:

{"key": "[INPUT]"}

他们不会逃到周围的环境中。

尽管在其他情况下它可能不安全,例如 CSS 样式或 URL 等等。要应用的正确编码取决于周围的格式,因此应该在有此信息可用的输出中选择。

如果这些值未在输出中编码,则如果数据源发生更改或在新上下文中使用,则可能会导致漏洞。

另一个问题是值将被破坏。如果您对 HTML 数据使用 JSON 编码,或对 JSON 数据使用 HTML 编码,则这些值将使用不必要的反斜杠和 & 转义序列填充。如果引号和括号符号是有效输入,那么您应该将它们保留在输入中,如果它们不是有效输入,那么您根本不应该接受它们。

于 2018-03-31T20:14:15.887 回答