• ベストアンサー

初心者の質問「htmlspecialchars」

高校生で、最近phpをやり始めた者です。 http://www.phppro.jp/school/phpschool/vol7/1 このページに書いてあるスクリプトの下から五行目の「htmlspecialchars関数」が何をしているのかよくわかりません。 関数の意味も調べ、何故必要なのか頭をひねりつつ考えてみたのですが、今ひとつ理解できませんでした。 大変未熟者ですみませんが、回答をいただけるとありがたいです。

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

  • ベストアンサー
  • altrn
  • ベストアンサー率62% (10/16)
回答No.2

この場合でいえば「年齢」なので数字が入っているのが当然と 思うところですが、 ユーザーは何をいれてくるかわからないので、 たとえば "や< を含む文字を入れられると困ることになります。 具体的には <input type="text" name="age" value="<?php print($age); ?>" > とした場合に、 $ageが「20」であれば、 <input type="text" name="age" value="20" > となり大丈夫なのですが $ageに、たとえば 「20" ><img src="http://www.google.co.jp/intl/ja_jp/images/logo.gif" 」 と入れられてしまった場合、 <input type="text" name="age" value="20" ><img src="http://www.google.co.jp/intl/ja_jp/images/logo.gif" > という結果になって勝手にimgタグを入れられてしまうことになります。 ほかにもjavascriptなどを埋め込まれると危険です。 そのようなHTMLタグの記号として使われる、<や"を無効化する必要がある、ということになるかと思います。 また、ここでは$ageはユーザーからの入力($_POST)から 作られているので注意する必要がある、ということになるかと思います。

wccf202
質問者

お礼

回答ありがとうございます。

その他の回答 (3)

  • t_netbug
  • ベストアンサー率34% (15/44)
回答No.4

使う理由に関しては↓で書き込みされている方を参考にすれば良いかと。 また、使う際にさらにこんな注意点もあります。 http://www.atmarkit.co.jp/fsecurity/rensai/hoshino10/hoshino01.html

参考URL:
http://www.atmarkit.co.jp/fsecurity/rensai/hoshino10/hoshino01.html
wccf202
質問者

お礼

回答ありがとうございます。

  • ma2shin
  • ベストアンサー率41% (69/167)
回答No.3

これだけではありませんが、これをしないとデーターベースが操作できてしまうなど、セキュリティー上問題があるためです。 以下の本を読めば、わかります。 以下の本は、必ず必要と言えるでしょう。 http://www.amazon.co.jp/PHPサイバーテロの技法?攻撃と防御の実際-GIJOE/dp/4883374718/ref=sr_1_1?ie=UTF8&s=books&qid=1222643251&sr=8-1

wccf202
質問者

お礼

回答ありがとうございます。

  • localica
  • ベストアンサー率52% (202/385)
回答No.1

こんにちは htmlspecialchars()関数は文字列に含まれるHTMLタグがそのままブラウザ上に表示されないようにします。 これはもし送信者が悪意のあるタグを含めても対処するためです。

wccf202
質問者

お礼

回答ありがとうございます。

関連するQ&A