可以在 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 網站上的範例

相關內容