【问题标题】:Fortify security issue "Unreleased resource stream"加强安全问题“未发布的资源流”
【发布时间】:2017-02-16 10:14:03
【问题描述】:

我在下面的代码中获得了“未发布的资源流”的强化发现。

Resource[] l_objResource = resourceLoader.getResources(configErrorCode);
Properties l_objProperty = null;
for (int i = 0; i < l_objResource.length; i++) {
    l_objProperty = new Properties();
    l_objProperty.load(l_objResource[i].getInputStream());
}

BaseErrorParser.java中的函数loadErrorCode()有时无法释放getInputStream();分配的系统资源

谁能解释这个发现或帮助解决这个问题?


来自下面的评论,但上下文不清楚(JW):

ObjectInputStream l_objObjInputStream = null;
Map l_mapRet = null;
try {
    l_objObjInputStream = new ObjectInputStream(new FileInputStream(p_objFilename));
    Object l_objTemp = l_objObjInputStream.readObject();
    l_mapRet = (Map) l_objTemp;
} finally {
    if (l_objObjInputStream != null) {
        l_objObjInputStream.close();
    }
}

【问题讨论】:

  • BusinessObjectData.java中的loadObjectFromFile()函数有时无法释放FileInputStream()分配的系统资源

标签: java security inputstream


【解决方案1】:

您没有关闭由以下代码行打开的输入流

l_objResource[i].getInputStream();

如果有任何输入或输出流在使用后打开但未关闭,则通常强化扫描程序会报告未释放的资源流问题。处理这些问题的理想方法是在 finally 块中关闭所有打开的流,这样即使在异常情况下它们也不会产生任何问题。

你可以试一试 - finally 阻塞代码并关闭流,如下所示。

Resource[] l_objResource = resourceLoader.getResources(configErrorCode);
Properties l_objProperty = null;
InputStream is = null;
for (int i = 0; i < l_objResource.length; i++) {
    l_objProperty = new Properties();
    try {
          is = l_objResource[i].getInputStream();
          l_objProperty.load(is);
    } finally {
          if(is!=null) {
              is.close();
          }
    }
}

请检查它是否适用于您的情况。

【讨论】:

    【解决方案2】:

    您可以在此处使用 Try with resource。这将自动关闭您的流。

    Map l_mapRet = null;
    try (ObjectInputStream l_objObjInputStream = new ObjectInputStream(new FileInputStream(p_objFilename))){
        Object l_objTemp = l_objObjInputStream.readObject();
        l_mapRet = (Map) l_objTemp;
    } Catch(IOException E){
    // Handle exception
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多