7-8その他のセキュリティTips467 メール送信の危険性と対策を理解する
Level2
Point外部からの入力値を使用したメール送信処理に潜む脆弱性に注意する
PHPのmail関数、mb_send_mail関数では、第4引数にメールヘッダーを追加することができます。mb_send_mail関数の書式を以下に記します。
この第4引数の指定は任意ですが、PHPのマニュアルに記載されている通り、「改行("\n")で区切ることにより複数のヘッダーを指定可能」です。例えば下記のコードを見てください。
$header = "From: {$_POST['from']}\n"
mb_send_mail( "admin@website.example.com", $subject, $message, $header );
第4引数$headerでは、メールヘッダー中のFromを外部入力値を元に組み立てています。この時、悪意のあるユーザが$_POST['from']として、以下を入力したとします。
foo@spam.example.com\nBcc:bar@victim.example.com\n
こうすることで、メールヘッダーは以下のようになります(説明に必要な部分のみ抜粋します)。
To:
この記事は会員限定です。会員登録をすると続きをお読みいただけます。
ログイン / 新規登録