清理/验证变量以避免跨站点脚本攻击

问题描述 投票:0回答:4

我在CheckMarx安全扫描中遇到此问题:

的[[第69行]的方法exec]web\src\main\java\abc\web\actions\HomeAction.java获取用户输入CNF_KEY_COSN元素。然后,该元素的值流经代码没有经过适当的清理或验证,最终被在方法的logExceptionline 905中向用户显示web\src\main\java\gov\abc\external\info\ServiceHelper.java。这可能启用Cross-Site-Scripting攻击。

HomeAction.java的第69行

String cosn = (String) request.getParameter(CNF_KEY_CON);

[905行]]在ServiceHelper.java中仅记录错误:

private static void logException(InfoServiceException exception, String message) { String newMessage = message + ": " + exception.getMessageForLogging(); try { log.error(newMessage, exception); } catch (Exception e) { // fallback to console System.out.println("error logging exception ->"); e.printStackTrace(System.out); System.out.println("exception ->"); System.out.print(newMessage); if (exception != null) exception.printStackTrace(System.out); } }
HomeAction.java中的另一个代码块更改为:

if(cosn!= null && cosn.matches("[0-9a-zA-Z_]+")) { ... }

但是那没有帮助。如何验证/清除/编码

Li​​ne 69

。非常感谢您的帮助。
谢谢

我在CheckMarx安全扫描中遇到此问题:web \ src \ main \ java \ abc \ web \ actions \ HomeAction.java的第69行的方法exec获取CNF_KEY_COSN元素的用户输入。此元素的值...

java validation security input checkmarx
4个回答
0
投票
您可以使用Jsoup清理XSS攻击的字符串,为此有clean()方法。您可以执行以下操作来清理输入内容:

String sanitizedInput = Jsoup.clean(originalInput, "", Whitelist.none(), new OutputSettings().prettyPrint(false));


0
投票
Checkmarx定义了一组可以在系统中检查的消毒剂。

0
投票
我猜想该项目存在某种质量要求,您不仅必须清理输入,还必须以使您的静态分析工具满意的方式来做到这一点。

0
投票
根据您处理和显示日志的方式,对于XSS,这可能是误报(在Checkmarx中从技术上讲是“不可利用”)。如果日志曾经在浏览器中显示为html,那么从此应用程序的角度来看,它可能很容易受到盲目XSS的攻击,但是无论该组件将日志显示为html还是在上面的代码中,它都可能是一个漏洞。
© www.soinside.com 2019 - 2024. All rights reserved.