내 코드는 다음과 같습니다
echo "$result" | xargs -P50 -I@ bash -c '{ printf "@ $(curl --write-out "%{http_code}" -L -s --output /dev/null @)\n"; }'
여기에는 result
다음과 유사한 목록이 포함되어 있습니다.
https://example.com/somepath
https://example.com/somepath"
https://example.com/anotherpath?par1&par4=gg
예상 출력 [URL 상태 코드]
https://example.com/somepath 200
https://example.com/somepath" 200
https://example.com/anotherpath?par1&par4=gg 200
문제는 이 코드 조각을 실행할 때
bash: quot: No such file or directory
andsign으로 구분된 오류가 발생 &
하고 이를 해결할 수 없다는 것입니다.
@
작은따옴표/큰따옴표로 둘러싸려고 했지만 아무 효과가 없었습니다.
답변1
명령 문자열에 포함된 대체 기능으로 인해명령 주입 취약점. 이는 작업에서 볼 수 있는 내용입니다. curl
의 내용은 result
사용된 문자열 인수뿐만 아니라 코드로 구문 분석됩니다.
이를 방지하려면 다음을 사용할 수 있습니다(주요 문제에만 초점을 맞추고 다른 개선도 가능함).
printf '%s\n' "$result" | xargs -P50 -I@ bash -c 'printf "%s %s\n" "$1" \
"$(curl --write-out "%{http_code}" -L -s --output /dev/null "$1")"' mybash @