使用 OWASP 修复 java 中的跨站点脚本漏洞

Fixing Cross site scripting vulnerability in java using OWASP

我正在努力解决 java.Since 中的跨站点脚本问题 我是 OWASP 的新手,有人可以帮我弄清楚如何在以下情况下使用 OWASP 来清理输入。

  1. Enumeration<String> EnumHeader = request.getHeaderNames();

  2. Map<String, String[]> pMap = request.getParameterMap();

  3. Object value = request.getHeader(key);

  4. String[] refs = (req.getParameterValues(REFS_NAME));

您可以使用 OS 库来清理那些 Strings/Objects。

示例库:https://finn-no.github.io/xss-html-filter/

然后对于 headers 的 collections 和参数,您可以使用 Java 8 条流遍历它们,并将它们映射到新的过滤 collections(使用消毒剂库)。

虽然数据验证对于防止 XSS 非常有帮助,但它不一定涵盖持久性 XSS 的所有基础。唯一 100% 有效的保护是 OWASP Java 编码器项目或 OWASP ESAPI 的编码器提供的适当的上下文输出编码。一个原因是持久性 XSS,受污染的数据可能来自一个数据库,该数据库可能被另一个应用程序输入或更改,该应用程序具有对这些相同数据库表的插入/更新访问权限,但没有进行适当的数据验证。 (也就是说,受污染的数据可能会以其他方式进入您的系统,而不是通过您的应用程序。)因此,唯一万无一失的解决方案是进行适当的上下文输出编码。您已经提到的 OWASP XSS 预防作弊 Sheet 是一个很好的起点,它解释了所有这些。

可以通过对参数进行编码以及使用自定义正则表达式验证参数来修复跨站点脚本。

例如:Encode.forhtml(输入参数)

使用 OWASP 编码器的基于上下文的编码有多种类型。如果您不确定编码器或验证模式,请尝试以下跨站点脚本验证器以确保工作(正确)修复方法。

java 的 XSS 验证器:http://fixforscrossite.us-east-2.elasticbeanstalk.com/