公開日:2007年6月28日
独立行政法人情報処理推進機構
セキュリティセンター
本ページの情報は2007年6月時点のものです。
記載の資料は資料公開当時のもので、現在は公開されていないものも含みます。
Webアプリケーションの脆弱性対策にはさまざまなものがあり、実装段階で考慮すれば済むものもあれば、設計の上流段階から考慮したほうがよいものもある。
この一連のコンテンツが述べる脆弱性対策は、Webアプリケーションの開発工程と次のように関連づけられる。
Webアプリケーションの開発工程については、さまざまな考え方があり得るが、この一連のコンテンツでは次を想定する。
構築対象システムがどのようなものであらねばならないかを決める段階。どのようにコンピュータおよびネットワークを配し、どのようなデータ処理を行うか、人々はシステムにどのようにアクセスするかといった枠組みを決める。
対象システムを稼働させるための技術的な基盤を選定する段階。プログラミング言語、アプリケーションフレームワーク、OS、サーバマシン等を決める。これ以降の工程は、ここにおける意思決定に強く束縛される。
対象システムをどのような構造や仕様で実現するかを決める段階。設計の中は、さらに次のような細かな工程に分かれる。
システムの主要な構造を決める工程。ここでは骨格のレベルで、サブシステム、コンポーネント、データベース、主要ファイル等の配置を決める
Webサイトのホストをどのように設け、それらを実現するサーバコンピュータをどう設置するかを決める
ユーザのオペレーションや重要なデータ処理をどの程度ログ記録し、記録をどのように保護するかを決める
ページ遷移の体系、各ページのレイアウト、各入出力項目の仕様を決める
WebブラウザとWebサーバの間のデータ項目のやりとり、およびサーバ側におけるデータベース検索・更新のありかたを決める
ユーザへのページの見せ方や、会話の進め方を決める
データの値の、ユーザに見せる表現、メモリ内や電文における表現、データベースに保存する際の表現を決める
プログラム内部で取り扱うデータ項目の集団を電文上やデータベース内でどのようにレイアウトするかを決める
プログラム実装にあたってのモジュール構造、共通モジュールの持ち方等を決める
システム全体をどのようなモジュールの配置で構成するかを決める
どのような機能を共通モジュールにまとめるかを決める
エラー処理を共通モジュールにまとめるとともに、各業務処理からの呼び出し方を決める
業務処理をどのようなモジュールとして配置するかを決める
対象システムをどのように実装するかを決めてゆく。設計工程の他の作業と並行して、実装の誤りを検出し排除するためのテスト計画を立てる
それぞれのモジュールを実装する段階。詳細ロジックの設計、コーディング、および単体テストを含む
実装されたプログラムをテスト計画にもとづいてテストし、段階的に大きな単位に統合する段階
対象システムを運用する段階
この一連のコンテンツの脆弱性対策の各記事は、その対策の考慮を開始する段階ごとに分けると、開発工程との間に次のような関係がある(図1-6)。