0

在我的 java 类中,我正在运行以下命令来建立与服务器的网络连接,例如:

Process process = runtime.exec("net use \"\\\\External\path\download.zip\" password /user:username");

上面,密码和用户名是从用户那里接受的。

由于上述进程以系统权限运行,被攻击可以使用命令分隔符(&、&&、;、||、() 等)并在上述单个语句中执行多个命令。

我经历了这个主要任务是改变执行命令的权限和白名单或黑名单用户输入。

现在,我的问题是用户名和密码都可以包含任何宪章组合,所以我不能黑名单(&,&&,;,||,()等)并且 runtime.exec 在系统模式下运行,所以我不能得出一个解决方案。

我已经考虑过使用 ProcessBuilder 但 runtime.exec 在对空间进行分段命令后调用相同的代码。所以,这没有任何帮助。

另外,我不想引入 3rd 方库来解决这个问题,但如果这是唯一的解决方案,那么我必须接受它。

如果我可以删除 runtime.exec 用于建立网络连接的使用,那就太好了。

4

0 回答 0