bash スクリプト パラメータの悪用は可能ですか?

bash スクリプト パラメータの悪用は可能ですか?

Web フォームから bash スクリプトに電子メール アドレスを渡したいです。次の正規表現を使用しています。

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

これで十分でしょうか? それともエクスプロイトを埋め込むことはできますか?

スクリプトは PHP から呼び出されます:

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

答え1

PHP で電子メール アドレスをサニタイズして検証すると、シェル スクリプトを呼び出すよりも速くて安全になります。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サイトの例

関連情報