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

池田雅一(テクマトリックス)

2007-09-13 20:22

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

コードレビュー

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

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

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

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

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

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

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

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

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

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

ZDNET Japan クイックポール

所属する組織のデータ活用状況はどの段階にありますか?

NEWSLETTERS

エンタープライズコンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]