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