2008-10-20

http://anond.hatelabo.jp/20081020053019

はいこんにちは! Hamachiya2だよ。

alertでなくなったね。こんな短時間ですごい。
エガミくん飲み込みはやい感じだね…。

ええと、あとは、下の方の画像で、どうもマーキータグ(marquee)が埋め込まれてるみたいってことだよね。
うん。もう一回、htmlソースを表示ってして確認してみたよ。
こんなのが埋め込まれてた。

<img src='http://farm4.static.flickr.com/3120/2784053843_b7a7d07c9a_s.jpg' border=0 title=<marquee>test XSS</marquee> alt=<marquee>test XSS</marquee> />

これは問題点が二つあってね、
1つは、タグエスケープしわすれている箇所がある点
もう1つが、html属性値(alt=ナントカとか)をクオートでくくってない点

この二つを直していこうか!

phpプログラムの中のどこかで、<img>タグを出そうとしている部分があるはずだよ。
まずはそれを探そう。

そしたらきっと、その部分は、imgにphp変数を色々埋め込んで出そうとしているはず。
たとえばこんな風に。

echo "<img src='xxxxxx" . $hensuu1 "' title=" . $hensuu2 . " />";

これの$hennsuuも全てhtmlspecialchars()してあげる感じかな。

echo "<img src='xxxxxx" . htmlspecialchars($hensuu1, ENT_QUOTES) "' title=" . htmlspecialchars($hensuu2, ENT_QUOTES) . " />";

こうだね。

そうすればmarqueeタグが埋め込まれていても、

<img src="xxxxxxxx" title=&lt;marquee&gt;test xss&lt;/marquee&gt; />

こんな風にmarqueeとかがタグじゃなくなるので防げる。
でも完全じゃないんだこれ。
さっきも言った、属性値のクオートが足りてないから、ちょっと工夫すればxssやられちゃう。
詳細は長くなるので今は省くけど。

だから上の対処に加えて、titleとかaltとかの中身が、htmlでみた時に、ダブルクオートかシングルクオートで
くくられているようにしてやれば、いい感じになるよ!

<img src="xxxxx" title=ぺろぺろ alt=ぺろぺろ />

こうじゃなくて

<img src="xxxxx" title="ぺろぺろ" alt="ぺろぺろ" />

こうなるようにしよう。

(追記)

ちなみに、何で悪い大人の人はXSS脆弱性を突いてきて悪い事をするんですかー??

それだけエガミくんの生み出すものが注目されているってことだよ。
目立つとどうしても悪い人も寄ってきちゃうから困るよね。

  • http://anond.hatelabo.jp/20081020054933 id:hiroyukiegamiだよ! id:Hamachiya先生から2つの課題を貰ったよ! 1つめ!! 1つは、タグをエスケープしわすれている箇所がある点 ↑これは勉強になる!実際...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん