Quiero pasar una dirección de correo electrónico de 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 podría uno incrustar una hazaña?
El script se llama desde PHP:
system('/usr/local/bin/script.sh "$email"');
44
Bien hecho incluso por preguntar. No veo ningún potencial de explotación, pero puede rechazar algunas direcciones de correo electrónico válidas y aceptar algunas inválidas. Ah, y deberías anclar tu expresión regular .
—
Comodín
@Wildcard De hecho, la falta de anclaje hace que la expresión regular sea inútil como prueba de seguridad.
—
Gilles 'SO- deja de ser malvado'
Esta podría ser una dirección de correo electrónico válida
—
roaima
"the doctor"@gallifrey.com
. Tenga en cuenta el espacio citado en el componente de nombre de usuario.
¿En qué momento te preocupa una hazaña? La línea de asunto dice 'bash', por lo que es la preocupación por la expansión al pasar $ email como argumento (citado) a script.sh, o el manejo de script.sh del valor pasado, o la rigurosidad del (presumiblemente basado en PHP ) regex, o ???
—
Jeff Schaller
No está claro cómo se usa la expresión regular dentro de su script. Para un buen análisis, proporcione las partes relevantes de su secuencia de comandos.
—
jofel