ネットサービスの開発に役立ちそうな話題を中心にお届けします。
F.Ko-Jiの「一秒後は未来」 > プログラミング > XSS対策にならないというわけではなく
2008年10月26日 02:01
1201日前に投稿

XSS対策にならないというわけではなく

  • ... PV
  • このエントリーをはてなブックマークに追加

スポンサード リンク

セキュリティ関連でたまたま目にとまったので。

» XSSの脆弱性を限りなくなくす方法[to-R]

この記事では「入力時に $_GET や $_POST を htmlspecialchars によって実体参照に変換する方法が、XSS対策によい」と主張されていますが、通常このような手法は避けたほうがいいものだと思います。

理由はXSS対策にならないからというものではなく、コーディングを進めていく上で混乱を招きやすいからです。

たとえば $_GET や $_POST に与えられた入力値を何かと比較する際や、$_GET や $_POST の入力値に < や > が含まれているかどうかを調べる必要が出てきたとき、もし上記のような方法をとっていると、

  • < は &lt; に変換されている
  • &lt; は &amp;lt; に変換されている

(※追記: 2番目は間違いでした。コメントありがとうございます。)

ということを常に意識してコーディングする必要が生じるためです。

それよりは、プログラム内部では < と入力されたものは < として扱え、&lt; と入力されたものは &lt; として扱えるほうがめんどくさくなく、余計なバグを発生させる可能性も減らすことができるのではないかと思います。

スポンサード リンク

Written by
Meity.jp - Twitterなかまでプライベートなオフ会を開催したいなら


トラックバック

このエントリーのトラックバックURL:

コメント

はじめまして。to-Rの西畑です。

blogいつも拝見さしてもらっています。

言及ありがとうございます。

本文中に「GETやPOSTで受け取る値の性質が変わるので、すべてのプログラムで冒頭に入れれば動作するという魔法のコードではない」と書いたのが、入力値のデータを利用するようなプログラムには利用できないという意図もあったのですが、わかりにくかったですね。追記しておきましました。

あと、&lt; は &amp;lt;に変換されるとありますがこれは間違いで、htmlspecialchars_decodeを一度通していますので&lt;は&lt;のままです。(だから「<」と区別ができないというわけですが)

よろしかったら、ここだけ訂正いただけたらと。

> 西畑さん
htmlspecialchars_decodeが効いてるんですね。
コード書いて先に確かめておくべきでした。
ご指摘ありがとうございます。

< は &lt; に変換される
&lt; は &lt; のまま

という結果でしたので修正しました。

プログラミング

English version

前のエントリー: « Canvas @ Sony 2008 - 若手アーティストとソニーがアートコラボレーション
次のエントリー: chumby Night でウワサの chumby を目撃 »

コピペにご利用ください。

タイトル:

URL:

リンク用HTMLタグ: