Quiero pasar una dirección de correo electrónico desde un formulario web a un script bash. Estoy usando la siguiente expresión regular:
/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/
¿Es esto suficiente? ¿O se podría incorporar un exploit?
El script se llama desde PHP:
system('/usr/local/bin/script.sh "$email"');
Respuesta1
Puede desinfectar y validar la dirección de correo electrónico en PHP, lo que será más rápido y seguro que llamar a un script de shell. Llamar a un script de shell con datos no desinfectados desde un servicio web solo agregará otra cosa más que puede fallar.
$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";
}
Ejemplo anterior adaptado deejemplos en el sitio PHP.net.