따옴표를 올바르게 이스케이프 처리하세요.

따옴표를 올바르게 이스케이프 처리하세요.

다음 명령이 있습니다.

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"

관련 정보