当前位置: 首页 > 知识库问答 >
问题:

如何解决java中循环条件检查马克斯的未检查输入问题

寿意远
2023-03-14

我收到循环条件检查问题的未检查输入
我尝试了推荐的代码处理,但它对我不起作用。

检查马克思报告的描述:

Method transformPojoCommon at line 334 of
to_web/src/com/toweb/bd/TrainCategoriesBD.java gets user input from
element TC_TRAIN_CAT_NAME . This element’s value flows through the
code without being validated, and is eventually used in a loop
condition in getParentTrainTypes at line 162 of
to_web/src/com/toweb/dao/TrainCategoriesDAO.java. This constitutes an
Unchecked Input for Loop Condition.

我尝试了下面的代码:

valdiateRequestInput(ESAPI.encoder().
   canonicalize(request.getParameter(TOWebRequestConstants.TC_OBJID).trim()));
private String valdiateRequestInput(String currentPage) {
    try {
        currentPage = ESAPI.validator().getValidInput("HTTP parameter value: ", currentPage, "HTTPParameterValue", 2000, true);
    } catch (Exception e1) {
        log.error("failed to validate HTTP parameter value ", e1);
        throw new IllegalArgumentException("failed to validate HTTP parameter value "+currentPage, e1);
    }
    return currentPage;
}

共有2个答案

锺离良哲
2023-03-14

下面的方法只是将字符串的最大大小与输入(yourString)进行比较,如果输入(yourString)有无限长,则跳过该输入(yourString),因为如果用户输入(yourString)有无限长,而如果yourString,则跳过该输入(yourString)。length()在while或for循环中的某个位置使用,则可能会无限次运行条件,这是一个漏洞,会导致异常。因此,使用这种方法,我们可以通过抛出一条异常消息来避免这种情况,该消息表示要输入有效字符串,或者按照您的要求处理相同的字符串。

String yourString = unchecked_input_loop(yourString);

public String unchecked_input_loop(String yourString) {
    if (yourString.length() >= Integer.MAX_VALUE) {
        //if you need to throw the exeption saying OutOfMemoryError you can this, or else you can just return NULL
        throw new RuntimeException("Enter a valid yourString");
    }
    
    return yourString;
}
梁祯
2023-03-14

我已经修复了这些问题,使用ESAPI. validator(). getValidintger()或ESAPI. validator(). getValidDouble()基于返回类型。

希望这个解决方案对你也有帮助。

 类似资料:
  • 我得到未经检查的输入循环条件在下面的行在我的代码。 我提供了下面的解决方案,但检查马克斯扫描仍然显示相同的错误。 我也使用了getValidinteger()方法,但这两种方法似乎都没有解决这个问题。 这是循环--

  • 问题内容: 我的问题是关于在哪些Java检查的条件for循环时,有一个print语句的顺序做 在 该循环的“条件”。这似乎是不切实际的事情(我从未见过以任何实际方式使用它),尽管我对打印的内容缺乏理解,使我认为我可能不完全了解for循环的功能。在最近的一次考试中出现了以下问题: 输入n = 5时,以下方法将打印什么? 正确的答案是:0 1 2 3 4 5 在我看来,该循环应该打印-1,然后将i递增

  • 我有一个类,其中我们将“两个时态对象之间的时间量”存储到一个长变量monthBt中,并将其用作“for循环”中的测试表达式。然而,我在azure sechub中收到中级安全警告“未检查循环条件的输入”。 验证和删除警告的最佳方法是什么?谢谢

  • 我正在使用Pax考试(3.5.0)进行OSGi单元测试。我已经创建了一个测试,但是当我运行它时,我得到了这个堆栈跟踪: 我已经配置了在选项中,我看到了。 但我还是有例外。有人知道我做错了什么吗? 干杯

  • 问题内容: 约书亚·布洛赫(Joshua Bloch)在《有效的Java》中说 将检查的异常用于可恢复的条件,将运行时异常用于编程错误(第二版中的项目58) 让我们看看我是否正确理解了这一点。 这是我对检查异常的理解: 1.以上是否被视为经过检查的异常? RuntimeException是未经检查的异常吗? 这是我对未经检查的异常的理解: 4.现在,上面的代码难道不是一个检查过的异常吗?我可以尝试

  • 我试图创建一个简短的基于文本的冒险游戏使用Java。 我是一个初学的程序员,所以我的方法可能不是最有效的,但我只使用了我从学校课程中学到的东西。 为什么会出现这个问题?我不知道我做错了什么。 谢了!