다음 명령이 있습니다.
python -c 'import crypt; print(crypt.crypt("$Password", crypt.mksalt(crypt.METHOD_SHA512)))'
$Password
쉘 변수는 어디에 있습니까? 이것을 리터럴로 처리하는 대신 변수로 올바르게 확장하려면 어떻게 해야 합니까?
답변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"