Bash 스크립트 매개변수에서 악용할 수 있나요?

Bash 스크립트 매개변수에서 악용할 수 있나요?

웹 양식의 이메일 주소를 bash 스크립트로 전달하고 싶습니다. 다음 정규식을 사용하고 있습니다.

/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/

이것이 충분하나요? 아니면 익스플로잇이 포함될 수 있습니까?

스크립트는 PHP에서 호출됩니다.

system('/usr/local/bin/script.sh "$email"');

답변1

PHP에서 이메일 주소를 삭제하고 확인할 수 있는데, 이는 쉘 스크립트를 호출하는 것보다 더 빠르고 안전합니다. 웹 서비스에서 정제되지 않은 데이터로 쉘 스크립트를 호출하면 문제를 일으킬 수 있는 또 다른 문제가 추가될 뿐입니다.

$sanitized_email = filter_var($email, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_email, FILTER_VALIDATE_EMAIL)) {
    echo "This sanitized email address is considered valid.\n";
    echo "Before: $email\n";
    echo "After:  $sanitized_email\n";    
} else {
    echo "This sanitized email address is considered invalid.\n";
}

위의 예는PHP.net 웹사이트의 예.

관련 정보