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.