WebフォームのEメールアドレスをbashスクリプトに渡したいです。次の正規表現を使用しています。
/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/
これで十分ですか?それとも、エクスプロイトを含めることができますか?
スクリプトはPHPで呼び出されます。
system('/usr/local/bin/script.sh "$email"');
答え1
PHPからEメールアドレスを削除して確認できます。これはシェルスクリプトを呼び出すよりも高速で安全です。 Webサービスから未精製のデータでシェルスクリプトを呼び出すと、問題を引き起こす可能性があるもう1つの問題が追加されます。
$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";
}
上記の例はPHP.netウェブサイトの例。