正确转义引号

正确转义引号

我有以下命令:

python -c 'import crypt; print(crypt.crypt("$Password", crypt.mksalt(crypt.METHOD_SHA512)))'

$Passwordshell 变量在哪里。如何正确地将其扩展为变量,而不是将其视为文字?

答案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"

相关内容