我有以下命令:
python -c 'import crypt; print(crypt.crypt("$Password", crypt.mksalt(crypt.METHOD_SHA512)))'
$Password
shell 变量在哪里。如何正确地将其扩展为变量,而不是将其视为文字?
答案1
不要这样做,因为这将是代码注入漏洞,并且还要避免将密码作为命令的参数传递,因为它们随后会通过在输出中显示而公开,ps
并且有时会记录在某些审核日志中。
使用环境变量通常更好:
PASSWORD="$Password" python3 -c 'import os, crypt
print(crypt.crypt(os.getenv("PASSWORD"), crypt.mksalt(crypt.METHOD_SHA512)))'
(这里使用与环境VAR=value cmd
变量相反的语法export VAR
,因此环境变量仅传递给该一个命令调用)。
答案2
不。
python -c 'import sys; import crypt; print(crypt.crypt(sys.argv[1], crypt.mksalt(crypt.METHOD_SHA512)))' "$Password"