Quero passar um endereço de e-mail de um formulário da web para um script bash. Estou usando a seguinte regex:
/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/
Isso é suficiente? Ou alguém poderia incorporar uma exploração?
O script é chamado do PHP:
system('/usr/local/bin/script.sh "$email"');
Responder1
Você pode higienizar e validar o endereço de e-mail em PHP, o que será mais rápido e seguro do que chamar um script de shell. Chamar um script de shell com dados não higienizados de um serviço da Web apenas adicionará mais uma coisa que pode falhar.
$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";
}
Exemplo acima adaptado deexemplos no site PHP.net.