当命令的一部分来自用户inpu时在linux服务器上执行命令的安全方法

2024-09-20 17:27:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在查看一个web应用程序,它公开了一个功能,供用户通过web界面更改unix密码。经过身份验证的web用户提供其unix用户名和所需的密码。 命令注入显然是一种攻击手段。在

通过强制用户名只能位于:
/^[a-zA-Z0-9]+$/

此后,它将执行如下操作(在python中):

p = os.popen("/usr/bin/passwd " + username, "w")

以此类推。在

如果他们没有那个regex,像jon; rm -rf这样的用户名对于system或popen来说将是灾难性的。在

我不希望有更根本的东西,不会让我伤害自己,即使这样的错误输入给系统/popen调用让路。(例如subprocess

有没有更安全的方法来做到这一点,或者验证输入仍然是唯一的防御措施?我正在寻找一种比system/popen更安全的方法,或者如果有一种标准的执行命令的方法,其中部分命令来自用户输入,那么我会选择一种完全不同的方法。在


Tags: 方法用户命令功能身份验证web应用程序密码

热门问题