TOPシステムトレンド> Webアプリケーションのセキュリティ実装
安全なウェブサイト
安全なWebサイトの作成ガイド

第1回:Webアプリケーション開発者が知っておくべきセキュリティ
著者:独立行政法人 情報処理推進機構セキュリティセンター
2006/2/9
前のページ  1  2   3  次のページ
Webアプリケーションのセキュリティ実装

   ここでは、Webアプリケーションのセキュリティ実装として、IPAへの届出件数の多かった脆弱性や攻撃による影響度が大きい脆弱性を主に取り上げ、それらに対する根本的解決および保険的対策を示します。
  • SQLインジェクション
  • OSコマンド・インジェクション
  • クロスサイト・スクリプティング
  • セッション管理の不備
  • パス名パラメータの未チェック/ディレクトリ・トラバーサル
  • メールの第三者中継

表2:開発者が注意すべき点


SQLインジェクション

   データベースと連携したWebアプリケーションの多くは、利用者からの入力情報を基にデータベースへの命令文を組み立てます。ここで、命令文の組み立て方法に問題がある場合、攻撃によってデータベースの不正利用をまねく可能性があります。

   この問題を悪用した攻撃手法は、一般に「SQLインジェクション」と呼ばれています。

SQLインジェクション
図1:SQLインジェクション
(画像をクリックすると別ウィンドウに拡大図を表示します)

   SQLインジェクションの脆弱性がある場合、悪意あるリクエストにより、データベースの不正利用をまねく可能性があります。

   SQLインジェクション攻撃を受けた場合、データベースに格納された情報を不正に取得されたり、改ざんされたりする可能性があります。SQLインジェクションの対策として、これから解説する内容をご検討ください。


根本的解決

   まずは根本的解決について解説します。根本的解決として表2にあげた3つがあります。

  • SQL文の組み立てにバインド機構を使用する
  • バインド機構を使用できない場合は、SQL文を構成するすべての変数に対しエスケープ処理を行う
  • Webアプリケーションに渡されるパラメータにSQL文を直接指定しない

表3:SQLインジェクションの根本的解決

   それではこの3つについてそれぞれ解説していきます。


SQL文の組み立てにバインド機構を使用する

   これは、SQL文が混入する原因を作らない実装です。バインド機構とは、実際の値がまだ割り当てられていない記号文字(プレースホルダ)を使用してあらかじめSQL文の雛形を用意し、後に実際の値(バインド変数)を割り当ててSQL文を完成させる、データベースの機能です。

   バインド変数の値はエスケープ処理されてプレースホルダに渡されるため、利用者に入力された悪意あるSQL文の実行を防ぐことができます。データベースエンジンや開発環境によっては専用の機能が用意されている場合があるので、この機能の活用をお勧めします。

参考URL
セキュアDBプログラミング「バインドメカニズムを活用しよう」
http://www.ipa.go.jp/security/awareness/vendor/programming/a02_01.html


バインド機構を使用できない場合は、SQL文を構成するすべての変数に対しエスケープ処理を行う

   これは、根本的解決「SQL文の組み立てにバインド機構を使用する」のバインド機構を実装できない場合に実施すべき実装です。

   利用者から入力されるパラメータや、データベースに格納された情報など、SQL文を構成するすべての変数や演算結果に対し、エスケープ処理を行ってください。

   エスケープ処理には、文字の置換(例えば、「.」→「..」、「\」→「\\」など)や関数(例えば、DBIのquote()など)を利用する方法があります。

   なお、SQL文にとって特別な意味を持つ記号文字は、データベースエンジンによって差異があるため、利用しているデータベースエンジンに合わせて対策を行ってください。

参考URL
セキュアDBプログラミング
「入力文字列はエスケープしよう」「LIKE句では%と_に気をつけよう」
http://www.ipa.go.jp/security/awareness/vendor/programming/a02_01.html

前のページ  1  2   3  次のページ

安全なウェブサイトの作り方 - ウェブアプリケーションのセキュリティ実装とウェブサイトの安全性向上のための取り組み

2006年1月31日にIPAは、ウェブサイト運営者がウェブサイト上で発生しうる問題に対して、適切な対策ができるようにするため、「安全なウェブサイトの作り方」を取りまとめ公開いたしました。

本記事は、その報告書の転載です。詳しい内容に関しましては、以下のURLをご参照ください。

安全なウェブサイトの作り方
http://www.ipa.go.jp/security/vuln/documents/2005/website_security.pdf

脆弱性関連情報に関する届出について
http://www.ipa.go.jp/security/vuln/report/index.html

IPA(独立行政法人情報処理推進機構)
http://www.ipa.go.jp/index.html

IPA/ISEC(独立行政法人情報処理推進機構セキュリティセンター)
http://www.ipa.go.jp/security/index.html

独立行政法人情報処理推進機構セキュリティセンター
著者プロフィール
独立行政法人 情報処理推進機構セキュリティセンター
情報処理推進機構セキュリティセンター(IPA/ISEC)は、わが国において情報セキュリティ対策の必要性・重要性についての認識を啓発・向上し、具体的な対策実践情報・対策手段を提供するとともに、セキュアな情報インフラストラクチャ整備に貢献することをミッションとしています。


INDEX
第1回:Webアプリケーション開発者が知っておくべきセキュリティ
  はじめに
Webアプリケーションのセキュリティ実装
  Webアプリケーションに渡されるパラメータにSQL文を直接指定しない