gpt4 book ai didi

java - 如何清理 Runtime.exec() 中使用的用户输入?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:17 25 4
gpt4 key购买 nike

我需要通过命令行调用自定义脚本,该脚本需要很少的参数并在 Linux 机器上调用。当前版本容易出现各种shell注入(inject),如何清理用户提供的参数?参数包括登录名和路径(Unix 或 Windows 路径),用户应该能够输入任何可能的路径(该路径是指用户服务器上的远程路径)。

现在的代码看起来像这样:

Process process = Runtime.getRuntime().exec("myscript " + login + " " + path);

最佳答案

来自 this answer ,改用 ProcessBuilder:

ProcessBuilder pb = new ProcessBuilder("myscript", login, path);

这应该可以防止 shell 注入(inject)。

如果路径只引用他们自己系统上的路径,那么路径注入(inject)应该不是问题:

the path refers to remote path on user server

风险是如果服务器以某种方式联系“路径”,这在您的问题中并不清楚。它是什么类型的路径? URL 路径、Samba 共享?

您可能需要针对 Server Side Request Forgery 对其进行保护.这涉及验证用户输入以检查它是指外部服务器,而不是您自己网络内部的服务器。

关于java - 如何清理 Runtime.exec() 中使用的用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38972123/

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