電子書籍の厳選無料作品が豊富!

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

A 回答 (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.g …

と入れられてしまった場合、

<input type="text" name="age"
value="20" ><img src="http://www.google.co.jp/intl/ja_jp/images/logo.g … >

という結果になって勝手にimgタグを入れられてしまうことになります。
ほかにもjavascriptなどを埋め込まれると危険です。

そのようなHTMLタグの記号として使われる、<や"を無効化する必要がある、ということになるかと思います。

また、ここでは$ageはユーザーからの入力($_POST)から
作られているので注意する必要がある、ということになるかと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/30 00:42

使う理由に関しては↓で書き込みされている方を参考にすれば良いかと。


また、使う際にさらにこんな注意点もあります。
http://www.atmarkit.co.jp/fsecurity/rensai/hoshi …

参考URL:http://www.atmarkit.co.jp/fsecurity/rensai/hoshi …
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/30 00:42

これだけではありませんが、これをしないとデーターベースが操作できてしまうなど、セキュリティー上問題があるためです。


以下の本を読めば、わかります。
以下の本は、必ず必要と言えるでしょう。

http://www.amazon.co.jp/PHPサイバーテロの技法?攻撃と防御の実際-GIJOE/dp/4883374718/ref=sr_1_1?ie=UTF8&s=books&qid=1222643251&sr=8-1
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/30 00:42

こんにちは



htmlspecialchars()関数は文字列に含まれるHTMLタグがそのままブラウザ上に表示されないようにします。

これはもし送信者が悪意のあるタグを含めても対処するためです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/29 00:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!