gpt4 book ai didi

php - linux , 只允许用户执行一个带有可变变量的命令

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:18 25 4
gpt4 key购买 nike

我有 2 台服务器。第一个 Web 服务器是另一个 Linux 服务器。在网络服务器上,我编写了连接到linux服务器的php脚本,并在用户输入后运行命令。在这种情况下,在 Linux 服务器上执行的命令不一样。例如:

<input type="text" name="input">

...

$user_input = $_POST["input"]

...

if (!($stream = ssh2_exec($con, "cat $user_input | grep some_text"))) {
echo "fail: unable to execute command\n";
}

现在我必须允许用户仅使用一个具有可变变量的命令。用户只能给予前。 “cat”和“grep”命令,但“$user_input”每次都会改变。有什么办法可以解决情况吗?

最佳答案

取决于您的代码...

cat $user_input | grep some_text

...您可能需要将用户输入限制为文件的一个特定路径或/并且可能包含一些附加的 cat 参数。

在这种情况下,您必须“烧录”源代码中唯一的命令并清理/验证用户输入以避免注入(inject)其他命令,例如:

$user_input = "/dev/null; rm -rf /"

在这种情况下,您应该构建多步骤验证来检查用户输入的不同方面,以确定这是否确实是一条路径。例如一些正则表达式,检查这是否是典型的路径语法。您还可以尝试将 pathinfo() 作为验证的一部分,以查看是否有一些有效的输出。最后,如果用户输入仅包含文件名,则很难获得 100% 安全的破解。

看这里:Determine via C# whether a string is a valid file path

关于php - linux , 只允许用户执行一个带有可变变量的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29936628/

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