纯文本字段验证可防止XSS攻击

时间:2019-07-01 22:51:22

标签: java security xss

我们的应用程序中有一些纯文本字段,我们试图防止XSS。例如,供用户评论帖子的评论字段(纯字段)。不应期望用户具有更改格式的能力,但是他们应该能够以纯文本形式编写任何内容,包括不同的语言,特殊字符,例如@,&,',*等。 我们也不允许使用“ <”和“>”。

因此,如果我在服务器端(Java)中检查输入String并通过验证而失败,用户应该使用“>”还是“ <”,就足够了吗?会暴露出任何安全隐患或限制吗?

public boolean isValid(String value) {
  if (value == null) {
    return true;
  }
  // Setting an arbitrary large number (should be enough for any article/text)
  if (value.length() > 50000) {
    return false;
  }

  return !value.contains(">") && !value.contains("<");
}

1 个答案:

答案 0 :(得分:0)

通常,输入验证不足以抵御XSS。这个问题缺乏足够的细节来说明在这种特定情况下是否可以利用,但是无论哪种方式,仅依靠输入验证都不是一个好主意。

如果您打算针对XSS针对应用程序中的多个视图实施此通用措施,则几乎可以肯定会失败。

请考虑输入" onclick="alert(1)" x="javascript:alert(1)作为href等等。而且,我们甚至都没有提到<script> var myvar = {{variable}}; </script>和类似视图模板的最终案例。这是一堆无尽的蠕虫。

实际上防止XSS的唯一方法是根据上下文实现正确的输出编码 输出的内容写入(html,属性,javascript等),即使如此,您仍然必须要小心关于javascript:以及直接写到Javascript上下文中的内容。