웹 양식의 이메일 주소를 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 사이트의 예.