如何忽略ESAPI异常“ org.owasp.esapi.errors.IntrusionException:输入验证失败”?

时间:2019-03-15 08:06:27

标签: java owasp esapi

我的项目(基于JSP,Struts,hibernate构建)从用户处获取输入并将其保存在数据库中。为了确保我的应用程序安全,我使用了ESAPI jar。

我正在例外

  

org.owasp.esapi.errors.IntrusionException:输入验证失败

使用方法ESAPI.encoder().canonicalize();

当我们从Skype,MS Word等复制和粘贴数据时,通常会发生这种异常。

当我从Skype Messenger中复制粘贴字符串时,它会自动添加带有div,meta,p等(所有HTML标记)的额外样式数据,这会导致添加许多特殊字符,这可能会导致上述异常。 / p>

但是当我从记事本中复制字符串时,它不会给出异常。

如何忽略此异常,以便添加数据? ESAPI.properties或validation.properties中是否有需要修改的内容?您对此有何看法?

1 个答案:

答案 0 :(得分:0)

我认为,当您从(例如)MS Word中粘贴某些内容而不是从诸如记事本之类的简单内容中粘贴内容时,您的怪异问题与其他编码有关。当您使用Word时,它会拾取一些其他元数据,并且“ MS Word”中的默认“粘贴”实际上是“特殊粘贴”。这样做是为了使您可以将文本从一个Office应用程序复制到另一个(例如,Word到Outlook)并“保留格式”。我认为正是这些额外的元数据让您感到困惑,因为ESAPI看起来像是经过多编码的,或者它认为使用了混合编码。

也就是说,如果要进行验证,则实际上应该使用Validator.isValidInput()或Validator.getValidInput()方法之一。默认情况下,此调用为Encoder.canonicalize()(除非您使用'develop'分支中的最新ESAPI,在该分支中您实际上可以禁用规范化-最近的错误修复)。

-凯文