LoginSignup
1
2

メールヘッダーインジェクション

Posted at

はじめに

メールヘッダーインジェクションについてまとめる。

メールヘッダーインジェクションとは

メールヘッダーに不正なヘッダー情報を混入させることで、スパムメールなどを送信させる攻撃のこと。

以下のようなコードがあったとして、

mail_send.php
mb_send_mail('test@example.com', $_POST['subject'], $_POST['body'], 
"From: {$_POST['from']}");

"From: {$_POST['from']}")の箇所に以下のような値を渡した時、

test@example.com
Bcc: injection@example.com

新たなBccヘッダーが認識されてしまう。
(入力値を介して、ユーザーが勝手に送付先を忍び込ませることができてしまう。)

メールヘッダーインジェクションのあるサイトは、スパムメールの踏み台にされる。

対策

メールアドレスの妥当性を検証する。
/\A\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\z/」は、メールアドレスを表す正規表現パターン。

このようなチェックを入れることで、メールアドレスを複数含んだ文字列は指定できなくなる。

mail_send.php
if (!preg_match('/\A\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\z/', $_POST['from'])) 
{
    die('不正なメールアドレスです。');
}
mb_send_mail('test@example.com', $_POST['subject'], $_POST['body'], "From: {$_POST['from']}");
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2