可以在 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 中清理和验证电子邮件地址,这比调用 shell 脚本更快、更安全。使用来自 Web 服务的未经净化的数据调用 shell 脚本只会增加另一件可能会破坏的事情。

$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 网站上的示例

相关内容