【发布时间】:2021-12-07 10:36:50
【问题描述】:
我正忙于编写需要用户输入的 Python3 脚本,输入用作传递给 shell 的命令中的参数。
该脚本仅供受信任的内部用户使用 - 但我宁愿有一些应急措施来确保命令的有效执行。
示例 1:
import subprocess
user_input = '/tmp/file.txt'
subprocess.Popen(['cat', user_input])
这将输出'/tmp/file.txt'的内容
示例 2:
import subprocess
user_input = '/tmp/file.txt && rm -rf /'
subprocess.Popen(['cat', user_input])
结果(如预期):
cat: /tmp/file.txt && rm -rf /: No such file or directory
这是一种可接受的输入净化方法吗?根据最佳实践,除此之外我还应该做些什么吗?
【问题讨论】:
-
不,不是来自文件。输入是通过终端中的交互式菜单输入的。我只是简化了我的问题。变量“user_input”只是表示用户应该输入到应用程序中的任何内容。
标签: python-3.x bash shell input sanitization