Exploit no bash script parameter possible?

8

Eu quero passar um endereço de e-mail de um formulário da web para um script bash. Eu estou usando o seguinte regex:

/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/

Isso é suficiente? Ou alguém poderia incorporar um exploit?

O script é chamado pelo PHP:

system('/usr/local/bin/script.sh "$email"');
    
por chris 20.05.2016 / 21:41

1 resposta

1

Você pode limpar 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-analizados de um serviço da Web apenas adicionará outra coisa que pode ser quebrada.

$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 de exemplos no site PHP.net .

    
por 23.07.2016 / 14:06