私のサイトには PHP 駆動の HTML コンタクト フォームがあります。現在、PHP のmail()関数を使用しています。そのため、メール ヘッダー インジェクション攻撃を回避するために、多くのユーザー入力の検証を行う必要があります。私は安全だと思いますが、おそらく何かを忘れており、堅牢な PHP メール ライブラリに移行したいと考えています。私が選んだライブラリはSwiftmailerです。
ここで、Swiftmailer が次のアドレスに対応しているかどうかを確認したいと思います。
- 送信者名の
<
および文字を削除またはエスケープします。>
- 送信者名から改行 (
\n
,\r\n
...) を削除します。 - メールの件名から改行を削除またはエスケープします。
- メッセージ本文 (メールの内容) の改行を正規化します。PHP ドキュメントに従って、
\n
コンテンツ内で、および\r\n
電子メール ヘッダー セパレーターとして使用する必要があります。
PS: Swiftmailer チームに問い合わせてみましたが、うまくいきませんでした。
編集:
私は Swiftmailer でいくつかのテストケースを行いましたが、これは私がこれまでに見つけたものです:
- 送信者名に
<
またはがあると、配信不能エラー メールが届きます。これは、メール サーバーへのDOS 攻撃につながる可能性があります (おそらく、私が間違っている可能性があります)。これは正常ですか?>
- 改行はエスケープされるため、インジェクション攻撃は失敗します。
- 改行はエスケープされるため、インジェクション攻撃は失敗します。
- テスト済みですが、Swiftmailer が何をするのかわかりません (何かをする場合)。だから私はまだここで暗闇の中にいます。
誰かが私のために#1と#4を明確にすることができますか? 正常な動作かどうかはわかりません...