【 PHP 】PHP8に入門してみた 227日目 PHPの基本 ( 高度 セキュリティ その5 )
PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。
高度
メールヘッダインジェクション
メールヘッダーインジェクションとは電子メールのヘッダーに意図しない情報を挿入する攻撃のことを指します。
この攻撃は、悪意のあるユーザーが入力した特定の文字列をメールのヘッダーに挿入することによって実現されます。
PHPにおけるメールヘッダーインジェクション対策としては以下の方法が挙げられます。
- メールのヘッダーに挿入する文字列を、予め検証すること
メールヘッダーには、From、To、Cc、Bcc、Subjectなどが含まれます。
これらのヘッダーに挿入される文字列は検証し、不正な文字列を検出した場合はエラーを返すようにします。 - メールヘッダーに挿入する文字列をエスケープすること
不正な文字列をフィルタリングするだけでは不十分であるため、メールヘッダーに挿入される文字列はエスケープする必要があります。
エスケープする方法は、htmlspecialchars() 関数を使用することができます。$subject = htmlspecialchars($_POST['subject'], ENT_QUOTES, 'UTF-8');
- メールヘッダーに挿入する文字列を、ダブルクォートで囲むこと
ダブルクォートで囲むことで、不正な文字列を挿入されてもメールヘッダーが破壊されることを防ぐことができます。$to = "\"".htmlspecialchars($_POST['to'], ENT_QUOTES, 'UTF-8')."\"";
メモ
セキュリティについては解説が熱い!
ディスカッション
コメント一覧
まだ、コメントがありません