如何在JAVA中减轻runtime.exec的OS命令注入

时间:2017-07-12 12:05:52

标签: java security code-injection runtime.exec net-use

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

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

以上,用户可以接受密码和用户名。

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

我去了this,其主要任务是更改执行命令和白名单或黑名单用户输入的权限。

现在,我的问题是用户名和密码都可以包含任何章程组合,所以我不能黑名单(&,&&,;,||,()等)和runtime.exec运行系统模式,所以我无法找到解决方案。

  

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

     

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

     

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

0 个答案:

没有答案