• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メールフォーム セキュリティについての質問 )

メールフォームセキュリティについての質問

このQ&Aのポイント
  • PHPを使ったメールフォームのセキュリティについての質問です。入力された文字をhtmlspecialcharsでエスケープして表示し、メール送信前にhtml_entity_decodeで再変換していますが、これはセキュリティ上問題があるでしょうか?
  • PHPのメールフォームでセキュリティについての質問です。htmlspecialcharsで入力された文字をエスケープして表示し、メール送信前にhtml_entity_decodeで再変換していますが、これはセキュリティ上問題があるのでしょうか?
  • PHPを学んでいる初心者ですが、メールフォームのセキュリティについて質問があります。入力された文字をhtmlspecialcharsでエスケープし、メール送信前にhtml_entity_decodeで再変換していますが、これはセキュリティ上問題があるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.2

> 単にデータをそのままメール送信する場合は必要ないとの理解で > 良ろしいでしょうか? そゆことです。 htmlspecialchars は 雑に言ってしまえば フォームに入力された文字などに、 HTMLタグに使用されている特殊文字(「<」とか「>」とか)が入っていた場合、 タグとして誤認識させないために入れておくものです。 試しに、以下のスクリプトで htmlspecialchars がある場合と、ない場合で 挙動を 比べてみてください。 htmlspecialchars の意味が分かると思います。 <?php $str = "'><script>alert('hogeeeeee')</script><'"; // ない時 //print "<input type=text name=title value='" . $str . "'>"; // ある時 print "<input type=text name=title value='" . htmlspecialchars($str , ENT_QUOTES) . "'>"; ?>

その他の回答 (2)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.3

度々すみません。 ふと思ったのですが、HTMLメールの場合は、htmlspecialcharsしないとまずいのかもしれません。 これに関しては、俺も よく分かりませんので、ご注意ください。

buzzard
質問者

お礼

bm_hiro様 ご回答ありがとうございます。 また、サンプルまで表記していただきありがとうございました。 htmlspecialcharsの使いどころについて少し理解できました。 HTMLメールの場合は確かにそうですね。 念頭にありませんでしたが、調べてみます。 ありがとうございました。

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

んーとですね、大雑把に言ってしまうと、 POSTされてきたものを、いきなりhtmlspecialcharsしてやる必要はないんです。 ブラウザに表示する時にhtmlspecialcharsしてやればいいんです。 ↓みたいな感じに。 print "<input type=text name=title value='" . htmlspecialchars($_POST[title]) . "'>"; 内部で扱っているだけの部分までhtmlspecialcharsしてしまうから、 メール送信の時に 再度 逆変換かけないといけないという状況に。。

buzzard
質問者

補足

bm_hiro様 ご回答ありがとうございます。 html_entity_decodeの一行以外は ほぼサンプル本の記事そのままだったのですが、 必要なかったんですね。 ということは、送信前の確認画面などで入力されたデータを ブラウザ上に表示する場合にはエスケープが必要で、 単にデータをそのままメール送信する場合は必要ないとの理解で 良ろしいでしょうか?

関連するQ&A