Exploit im Bash-Skriptparameter möglich?

Exploit im Bash-Skriptparameter möglich?

Ich möchte eine E-Mail-Adresse aus einem Webformular an ein Bash-Skript übergeben. Ich verwende den folgenden regulären Ausdruck:

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

Reicht das? Oder könnte man einen Exploit einbetten?

Das Skript wird von PHP aufgerufen:

system('/usr/local/bin/script.sh "$email"');

Antwort1

Sie können die E-Mail-Adresse in PHP bereinigen und validieren. Das ist schneller und sicherer als der Aufruf eines Shell-Skripts. Der Aufruf eines Shell-Skripts mit nicht bereinigten Daten von einem Webdienst fügt nur eine weitere Komponente hinzu, die zu Problemen führen kann.

$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";
}

Beispiel oben adaptiert vonBeispiele auf der PHP.net-Site.

verwandte Informationen