Возможен ли эксплойт в параметре скрипта bash?

Возможен ли эксплойт в параметре скрипта bash?

Я хочу передать адрес электронной почты из веб-формы в скрипт bash. Я использую следующее регулярное выражение:

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

Достаточно ли этого? Или можно внедрить эксплойт?

Скрипт вызывается из PHP:

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

решение1

Вы можете дезинфицировать и проверять адрес электронной почты в PHP, что будет быстрее и безопаснее, чем вызов скрипта оболочки. Вызов скрипта оболочки с недезинфицированными данными из веб-сервиса просто добавит еще одну вещь, которая может сломаться.

$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.

Связанный контент