- ベストアンサー
初心者の質問「htmlspecialchars」
高校生で、最近phpをやり始めた者です。 http://www.phppro.jp/school/phpschool/vol7/1 このページに書いてあるスクリプトの下から五行目の「htmlspecialchars関数」が何をしているのかよくわかりません。 関数の意味も調べ、何故必要なのか頭をひねりつつ考えてみたのですが、今ひとつ理解できませんでした。 大変未熟者ですみませんが、回答をいただけるとありがたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
この場合でいえば「年齢」なので数字が入っているのが当然と 思うところですが、 ユーザーは何をいれてくるかわからないので、 たとえば "や< を含む文字を入れられると困ることになります。 具体的には <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)から 作られているので注意する必要がある、ということになるかと思います。
その他の回答 (3)
- t_netbug
- ベストアンサー率34% (15/44)
使う理由に関しては↓で書き込みされている方を参考にすれば良いかと。 また、使う際にさらにこんな注意点もあります。 http://www.atmarkit.co.jp/fsecurity/rensai/hoshino10/hoshino01.html
お礼
回答ありがとうございます。
- ma2shin
- ベストアンサー率41% (69/167)
これだけではありませんが、これをしないとデーターベースが操作できてしまうなど、セキュリティー上問題があるためです。 以下の本を読めば、わかります。 以下の本は、必ず必要と言えるでしょう。 http://www.amazon.co.jp/PHPサイバーテロの技法?攻撃と防御の実際-GIJOE/dp/4883374718/ref=sr_1_1?ie=UTF8&s=books&qid=1222643251&sr=8-1
お礼
回答ありがとうございます。
- localica
- ベストアンサー率52% (202/385)
こんにちは htmlspecialchars()関数は文字列に含まれるHTMLタグがそのままブラウザ上に表示されないようにします。 これはもし送信者が悪意のあるタグを含めても対処するためです。
お礼
回答ありがとうございます。
お礼
回答ありがとうございます。