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

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

2007-09-13 20:22

 正しい入力データの条件と出力データのエスケープ処理内容が明確になっていない場合、設計レベルから検討しなおさなければならない。その他にも以下の点について確認を行うことで、より安全なアプリケーションにすることができる。

●エラー処理が適切になされているか?

 実行時にデータベースサーバとの通信ができなくなったなどの実行時エラーの処理を実装していない場合、コードの一部などを漏えいしてしまう危険性がある(ファイルの読み書きや、データベースアクセスが常に正常に処理を終了するわけではない)。

 また、すべてのエラーケースを詳細設計時に洗い出すことは、多くの場合、大変困難な作業となる。従って、コーディング時にすべてのエラーケースを洗い出し、コードレビューでそれらに対する処理を適切に行っているか確認する必要がある。

 さらに、ファイルの読み書き、データベースアクセス処理など、実行時にエラーが発生する個所で、処理の失敗を確実に管理しているかどうかも確認する必要があるだろう。

●ループなどの処理で境界となる条件に間違いはないか?

 発見される脆弱性の幾つかは、ループ処理終了条件や、入力データの境界条件のミスに起因している。特にループ処理の終了条件を間違っていると永久にループを繰り返してしまうことがある。境界条件が正しいか確認する必要がある。

●同時に処理が発生した場合にファイルへのアクセスなどに影響が無いか?

 発見される脆弱性には、同時にファイル、データベースへの読み書きなどの処理が要求された場合に発生するものがある。これは、ウェブアプリケーションでは、同時に処理が実行されることは無いという仮定のもとに作成されているためだ。

 しかし、実際には複数の同じ処理が同時に実行されることがある。ファイルへのアクセスは通常OSによりロックがかかるので問題が発生することはまれだが、たとえばECサイトの注文番号などのように、処理ごと(あるいはユーザーごと)に新しい番号を連番で発行している場合には、適切なロック処理を行っていない場合、同じ番号が別の処理(あるいは別のユーザー)に割り振られることがある。

 このように同時に処理が行われるとファイルなどの整合性が取れなくなることが無いかを確認する必要がある。

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

ZDNET Japan クイックポール

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

NEWSLETTERS

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

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

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