Java中的安全数据和BufferedReader

问题描述 投票:1回答:1

我试图学习有关Java中安全编码的更多信息,并承担了使我的代码更合规的任务。如果在下面创建的示例程序中处理敏感文件数据,如何确保在内存中执行后数据不会残留?

我主要是想知道是否需要使用程序原样清除内存。

我已经阅读了多个帖子,但是到目前为止,我还没有找到直接的解释。如果您采用其他方法以一种更安全的方式从文件中读取一行,请随时告诉我。阅读了这么多资料后,我开始感到有些迷茫。对新手的任何帮助将不胜感激!

import java.io.*;

public class Data {

private static final String file = "fileData.txt";

public static void main(String[] args) throws IOException {

   BufferedReader br = new BufferedReader(new FileReader(file));

   String data = null;

   try {
      // Read from the file
      data = br.readLine(); 

      // closing BufferedReader
      br.close();


      // Printing a line from file
      System.out.println(data);          
    }
    //define catch to handle the IOException
    catch (IOException e) {
       e.printStackTrace(); // Print Stack Trace for further analysis
    }
}

}

java security memory bufferedreader
1个回答
0
投票

恐怕您正在为一个失败的事业而战。

即使您zeroize使用了BufferedReader的缓冲区(由于它是私有的,您也必须使用access via reflection,所以不能保证compacting memory时未将JVM制作为它的副本。

引用Thomas Pornin's answer to a related question

如果您的安全模型和上下文要求归零密钥,那么您根本不应该使用Java(或者除了C和汇编语言以外,几乎什么都不能使用。)>>

© www.soinside.com 2019 - 2024. All rights reserved.