gpt4 book ai didi

java - 通过 ProcessBuilder 传递敏感数据

转载 作者:行者123 更新时间:2023-12-02 05:18:50 25 4
gpt4 key购买 nike

我正在尝试从我的 java 程序与外部控制台应用程序进行通信,并且我需要向其传递密码。

我的问题是,在 ProcessBuilder() 参数列表中以纯文本形式传递密码是否安全?我的意思是,有人可以拦截该消息吗?实现这一目标的更安全方法是什么?

谢谢

ArrayList<String> lstArgs = new ArrayList<String>();        
lstArgs.add("program.exe");
lstArgs.add("password");

ProcessBuilder pb = new ProcessBuilder(lstArgs);
pb.start();

最佳答案

不,将明文密码传递给另一个进程并不安全。并且将其作为命令行参数传递绝对不安全 - 普通用户无需任何特殊权限即可读取命令行参数(例如 ps 或 top 的输出或 Windows 中的等效项)。

最后,避免在字符串变量中捕获和保存密码。使用字符数组,并在不再需要时立即覆盖内容。 String 的问题在于,您无法控制何时回收内存,并且无法覆盖内容(String 是不可变的)。

有什么更好的方法可以做到这一点?如何为program.exe 创建一个编程接口(interface)(API),并通过调用或套接字传递信息。如何在仅用户可读的文件中传递密码并给出该文件的名称或句柄。

如果您无法更改program.exe,那么您将被迫使用不安全的方法。

关于java - 通过 ProcessBuilder 传递敏感数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26662719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com