[index] [bottom] [prev] [next]

危険な兆候

警戒警報発令!警戒警報発令!

この章は、セキュリティに関する内容です。

2004/10に、MozillaからFirefoxのプレビュリリースが発表されました。朝日新聞でも紹介されたり、数日で400万ダウンロードがあったり、ブラウザ戦争再燃などと、一部で騒がれています。

さて、このWebブラウザには、あまり知られていない(かもしれない)DOMインスペクタというツールが、標準で付いてきます。

このツールがなにをするものかというと、表示中のページを解析して、ページ内の構造をわかりやすく、ツリー形式に表示してくれます。

また、ツリーの中の特定のタグをクリックすると、表示中のページで該当する部分が、ブリンクしたりします。

表示が壊れてしまったHTMLドキュメントから、原因となる部分を見つける等、結構使えるツールではあります。

ところでこのツール、実は表示中のページの内容を、変更することもできてしまいます。これは、ソースレベルで変更するわけではなく、丁度フレームなどに読み込んだHTMLを、スクリプトを使って書き換えるのと同じです。

セキュリティとなにが関係するの?と思ったあなたは、ちょっと危険かもしれません。DOMインスペクタを使えば、簡単にhidden項目を変更できるからです。

こんなことしてないよね

hidden項目は、ページ間の情報伝達など、Webアプリケーションにはなくてはならないものですが、セキュリティ上問題になるような部分で使うというのは、御法度です。

次のような場合を考えてください。

ユーザが適当な条件で検索を行い、一覧表示します。そこからレコードを選択して、詳細表示を行うと、詳細な内容が表示されるという、よくありがちな処理です。

このとき、ユーザによって参照可能なレコードとそうでないレコードがあるとします。どのようなロジックになるでしょうか?

  1. ユーザが条件を入力し、検索ボタンを押下する。
  2. サーバが条件を受け取り、検索処理を行う。このとき、ユーザIDを元に、操作しているユーザが参照可能なレコードのみ、検索対象とする。
  3. 一覧表示を行う。画面上には伝票番号をhidden項目として、各レコードに埋め込む。
  4. ユーザがレコードを選択して、詳細ボタンを押下する。サーバへは埋め込まれたhidden項目の伝票番号が渡される。
  5. サーバは、渡された伝票番号をキーに詳細の内容を読み込み、画面表示する。

もし、5.の処理で参照可能かチェックを行っていないとすると、埋め込んだ伝票番号を書き換えられば、どの伝票でも参照することができてしまうことになります。

これは一例ですが、伝票番号が承認を行う上長のIDだったり、決済後の金額だったりした場合は、それこそ大問題でしょう。

クライアント側で、データの改竄ができてしまうという問題は、なにもWebアプリケーションだけのものではありません。

JavaだろうとCだろうとVBだろうと、プログラムである以上、何らかの方法(例えばデバッガ)でメモリ内の値を改竄するのは、不可能ではありません。coreファイルから、情報が漏れるというケースとにています。

しかし、プログラマの中でも、デバッガを使ってメモリのをスキャンして、必要な内容を書き換えられる人は少ないでしょう。ましてやプログラムの事などなにも知らない場合は、まず不可能です。

しかし、HTMLで画面を作っている以上、誰にでも改竄が可能であることを、意識して設計しなければなりません。リストラの腹いせにドッカーン!!とやられてしまうような、Webアプリケーションを、リリースしてしまいませんように。

(スコア:3, 参考になる)

消費者向け電子商取引サイトの運用における注意点の「消費者向け電子商取引サイトの運用における注意点(PDF)」は、注意しなければならない内容が簡潔に纏められています。

尤も、これだけ気を付ければ完璧!なんて事はありませんけど。

 

このページは、もう少し追記します。たぶん...

[index] [top] [prev] [next]