ikepyonのだめ人間日記

セキュリティに関することを書いていく予定。

セッションを使ったフォーム処理にありがちな問題点

http://d.hatena.ne.jp/teracc/20080225#1203957135
改めて読み直してみると、この問題は別にセッション変数を使っているか使ってないかにかかわらず起きることだな。これにも書いているとおり、最終的な処理を行う前に全てのデータのチェックを行うというのは必要だと思う。
まあ、Webアプリの場合、画面遷移がユーザの操作によって自由にできてしまうということを忘れているため(多分、もともとクライアントサーバのシステムを開発していた開発者に多いと思う。あくまで主観なので)、こういった問題が出るのだと思うけど。画面遷移が自由にできる=開発者が想定するべきことが増えるということなので、そこが従来のクライアントサーバシステムに比べ、ちょっと面倒なところだと思う。

画面遷移での値の受け渡しは、Hiddenでもセッション変数でもいいけど、Hiddenの場合は必ずエスケープ処理が必要だ。ところが、エスケープ処理を全てにおいて実施するというのを忘れてしまうことがあるがため(実際多くのXSSの問題はエスケープ漏れにあると思う)に、セッション変数を使ったほうが危険性が減るんじゃないかなぁと思うのですよ。ってこう書くと、「Hiddenは危険脳」といわれそうだw

後実装を確認していないのでわからないのだけど、セッション変数の管理ってどうやってるのだろう?メモリ上で管理している?もしそうなら、大量のアクセスがあったときに問題が起こりそうだけど、実際のところどうなんだろう?