ZDNet Japan Brand Site:
ZDNet Japan
builder

サイト脆弱性をチェックしよう!--第4回:開発工程におけるレビューやテストのコツ(その2)

今回も安全なアプリケーションを作るためのチェック方法について説明していきたいと思う。前回から引き続き、各開発工程におけるレビューと適切なテストについてを紹介する。

池田雅一(テクマトリックス)  2007年9月13日 20時22分

 今回も安全なアプリケーションを作るためのチェック方法について説明していきたいと思う。前回から引き続き、各開発工程におけるレビューと適切なテストについてを紹介する。

コードレビュー

 まずは、コードレビューでどういったことに注意して確認する必要があるか説明しよう。コードレビューのコツを理解するには、まずアプリケーションの動作について理解する必要がある。従って、最初にアプリケーションの動作について説明する。

 多くのアプリケーションでは、何らかの入力(ユーザーにより入力されたデータだけでなく、ファイルや、時刻なども含む)を必要とし、入力されたデータの加工などの処理を行い、結果を出力する。出力された結果は、別のアプリケーション(ブラウザやデータベースなど)で入力データとして利用されることがある。

 たとえば、あるECサイト用のアプリケーションの検索処理では、「category」というパラメータがあり、この値が「携帯電話」のとき、携帯電話関連商品の検索結果を返し、値が「PC」のときにはPC関連商品の検索結果を返すといったように、入力データの内容によって開発者が意図したとおりの処理をするといったことができる。

 従って、適切な入力をアプリケーションに渡したり、適切なページにアクセスすることで、アプリケーションの処理を利用者が開発者の想定している範囲内で制御することができる。多くの脆弱性は、この入力データに想定外のデータを渡されることによって発生する。

 このため、コードレビューでは、まずデータフローに注目する。データフローでは特に以下のことを確認してほしい。

  • 入力データが設計段階で規定したパターンのみで構成されているかを確認する処理が適切に実装されているか?
  • 設計段階で規定したエスケープ処理が出力直前に行われているか?

 これらの確認を行うには、入力データと出力データを取り扱っているコードを順番にすべて追跡し、適切な処理がなされているかどうかを確認する。

 これらは「第2回:“正しい”ウェブアプリのコーディングとは」で詳しく説明しているので、そちらも参考にしてほしい。

 先にも述べているが、多くの脆弱性は入力データの検証と出力時のエスケープ処理を適切に行うことで防ぐことができる。適切にこれらの処理を実装するには、設計の段階で、正しい入力データの条件と、データの出力先アプリケーションの仕様を確認し、明確にしておく必要がある。

キーショートカット:  b - 前のページ n - 次のページ
http://japan.zdnet.com/sp/feature/07websecur/story/0,3800078626,20356427,00.htm
サイト脆弱性をチェックしよう!--第4回:開発工程におけるレビューやテストのコツ(その2)

ZDNet Japan Essential Topic

ZDNet Japanからのお知らせ

Intel Video Series

sponsored by Intel

ZDNet Japan ニューズレター

企業情報システムの選択、導入、運用管理に役立つ情報を毎朝メール配信します。

ニューズレターの登録・登録情報変更 »