【 PHP 】PHP8に入門してみた 227日目 PHPの基本 ( 高度 セキュリティ その5 )

2023年4月5日

PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。

高度

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

メールヘッダーインジェクションとは電子メールのヘッダーに意図しない情報を挿入する攻撃のことを指します。
この攻撃は、悪意のあるユーザーが入力した特定の文字列をメールのヘッダーに挿入することによって実現されます。

PHPにおけるメールヘッダーインジェクション対策としては以下の方法が挙げられます。

  1. メールのヘッダーに挿入する文字列を、予め検証すること
    メールヘッダーには、From、To、Cc、Bcc、Subjectなどが含まれます。
    これらのヘッダーに挿入される文字列は検証し、不正な文字列を検出した場合はエラーを返すようにします。
  2. メールヘッダーに挿入する文字列をエスケープすること
    不正な文字列をフィルタリングするだけでは不十分であるため、メールヘッダーに挿入される文字列はエスケープする必要があります。
    エスケープする方法は、htmlspecialchars() 関数を使用することができます。

    $subject = htmlspecialchars($_POST['subject'], ENT_QUOTES, 'UTF-8');
  3. メールヘッダーに挿入する文字列を、ダブルクォートで囲むこと
    ダブルクォートで囲むことで、不正な文字列を挿入されてもメールヘッダーが破壊されることを防ぐことができます。

    $to = "\"".htmlspecialchars($_POST['to'], ENT_QUOTES, 'UTF-8')."\"";

メモ

セキュリティについては解説が熱い!

PHPPHP

Posted by raika@blog