ASP 講義シリーズ (第 20 回) ASP アプリケーションのセキュリティの維持
著者:Eve Cole
更新時間:2009-05-30 19:58:35
セキュリティ設定を適切に構成することの重要性を過小評価しないでください。セキュリティ設定を不適切に構成すると、ASP アプリケーションが不必要な改ざんにさらされるだけでなく、正規のユーザーが .asp ファイルにアクセスできなくなります。
Web サーバーは、ASP アプリケーションを不正アクセスや改ざんから保護するためのさまざまな方法を提供します。このトピックのセキュリティ情報を読んだ後、Windows NT および Web サーバーのセキュリティに関するドキュメントを注意深く読んでください。
NTFS アクセス許可 NTFS アクセス許可を個々のファイルおよびディレクトリに適用することにより、ASP アプリケーション ファイルを保護できます。 NTFS アクセス許可は Web サーバー セキュリティの基礎であり、ユーザーまたはユーザー グループのファイルおよびディレクトリへのさまざまなレベルのアクセスを定義します。有効な Windows NT アカウントを持つユーザーが、制限されたアクセス許可でファイルにアクセスしようとすると、コンピュータはファイルのアクセス制御リスト (ACL) をチェックします。この表は、さまざまなユーザーおよびユーザー グループに付与される権限を定義します。ユーザーのアカウントにファイルを開く権限がある場合、コンピュータはユーザーにファイルへのアクセスを許可します。たとえば、Web サーバー上の Web アプリケーションの所有者には、アプリケーションの .asp ファイルを表示、変更、削除するための変更アクセス許可が必要です。ただし、アプリケーションにアクセスするパブリック ユーザーには、読み取り専用のアクセス許可のみを付与し、アプリケーションの Web ページの表示のみに制限し、変更はできないようにする必要があります。
Global.asa セキュリティの維持 ASP アプリケーションを完全に保護するには、適切なユーザーまたはグループに対して、アプリケーションの Global.asa ファイルに対する NTFS ファイル アクセス許可を必ず設定してください。 Global.asa にブラウザーに情報を返すコマンドが含まれており、Global.asa ファイルを保護していない場合、アプリケーション内の他のファイルが保護されている場合でも、情報はブラウザーに返されます。
注: アプリケーションのファイルには必ず均一の NTFS アクセス許可を適用してください。たとえば、アプリケーションに含める必要があるファイルに対する NTFS アクセス許可を誤って制限しすぎた場合、ユーザーはアプリケーションを表示または実行できなくなる可能性があります。このような問題を防ぐには、アプリケーションに NTFS アクセス許可を割り当てる前に慎重に計画してください。
Web サーバーのアクセス許可 Web サーバーでアクセス許可を構成することにより、すべてのユーザーが ASP ページを表示、実行、および操作できる方法を制限できます。アプリケーション ファイルやディレクトリへの特定のユーザーのアクセスを制御する方法を提供する NTFS アクセス許可とは異なり、Web サーバーのアクセス許可はすべてのユーザーに適用され、ユーザー アカウントの種類は区別されません。
ASP アプリケーションを実行するユーザーは、Web サーバーのアクセス許可を設定するときに次のガイドラインに従う必要があります。
.asp ファイルを含む仮想ディレクトリに対する読み取りまたはスクリプトのアクセス許可を許可します。
.asp ファイルおよびスクリプトを含むその他のファイル (.htm ファイルなど) が配置されている仮想ディレクトリに対する「読み取り」および「スクリプト」アクセス許可を許可します。
.asp ファイルや、実行に実行アクセス許可が必要なその他のファイル (.exe ファイルや .dll ファイルなど) を含む仮想ディレクトリに対する読み取りアクセス許可と実行アクセス許可を許可します。
スクリプト マッピング ファイル アプリケーションのスクリプト マッピングにより、Web サーバーが .asp ファイルのソース コードを誤ってダウンロードすることがなくなります。たとえば、.asp ファイルが含まれるディレクトリに読み取りアクセス許可を設定した場合でも、.asp ファイルがスクリプト マッピング アプリケーションに属している限り、Web サーバーはそのファイルのソース コードを返しません。
Cookieのセキュリティ
ASP は、SessionID Cookie を使用して、アプリケーションの訪問中またはセッション中に特定の Web ブラウザー情報を追跡します。これは、対応する Cookie を含む HTTP リクエストが同じ Web ブラウザから送信されたものであるとみなされることを意味します。 Web サーバーは、SessionID Cookie を使用して、ユーザー固有のセッション情報を使用して ASP アプリケーションを構成できます。たとえば、アプリケーションが、ユーザーが CD を選択して購入できるオンライン音楽ストアの場合、SessionID を使用して、アプリケーション内を移動するユーザーの選択を追跡できます。
SessionID はハッカーに推測される可能性がありますか?
コンピューター ハッカーが SessionID Cookie を推測して正規ユーザーのセッション変数にアクセスするのを防ぐために、Web サーバーはランダムに生成された番号を各 SessionID に割り当てます。ユーザーの Web ブラウザが SessionID Cookie を返すたびに、サーバーは SessionID と割り当てられた番号を取得し、それがサーバーに保存されている生成された番号と一致するかどうかを確認します。 2 つの数値が一致すると、ユーザーはセッション変数へのアクセスが許可されます。この手法の有効性は、割り当てられる番号の長さ (64 ビット) にあり、コンピュータ ハッカーが SessionID を推測してユーザーのアクティブなセッションを盗む可能性がほぼゼロになります。
重要なSessionID Cookieを暗号化する
ユーザーの sessionID cookie を傍受したコンピューター ハッカーは、この cookie を使用してユーザーになりすますことができます。 ASP アプリケーションに個人情報、クレジット カード番号または銀行口座番号が含まれている場合、コンピューター ハッカーが盗んだ Cookie を使用してアプリケーション内でアクティブなセッションを開始し、この情報を取得する可能性があります。 Web サーバーとユーザーのブラウザ間の通信リンクを暗号化することで、SessionID Cookie が傍受されるのを防ぐことができます。
認証メカニズムを使用した制限された ASP コンテンツの保護 制限された ASP コンテンツにアクセスしようとする各ユーザーに有効な Windows NT アカウントのユーザー名とパスワードを持たせるように要求できます。ユーザーが制限されたコンテンツにアクセスしようとすると、Web サーバーは認証、つまりユーザーの身元確認を実行して、ユーザーが有効な Windows NT アカウントを持っているかどうかを確認します。
Web サーバーは次の認証方法をサポートしています。
基本認証 ユーザーにユーザー名とパスワードの入力を求めます。
Windows NT の要求/応答認証は、ユーザーの Web ブラウザからユーザー ID 情報を暗号化して取得します。
ただし、Web サーバーは、Windows NT ファイル システムのアクセス許可によって匿名アクセスが禁止または制限されている場合にのみユーザーを認証します。
メタベースを保護するには、メタベースにアクセスする ASP スクリプトには、Web サーバーが実行されているコンピュータの管理者権限が必要です。これらのスクリプトをリモート コンピュータから実行する場合は、Windows NT 要求/応答認証を使用するなど、認証された接続を通じて接続する必要があります。管理 .asp ファイル用のサーバーまたはディレクトリを作成し、そのディレクトリ セキュリティ認証方法を Windows NT 要求/応答認証に設定する必要があります。現在、Windows NT の要求/応答認証は、Microsoft Internet Explorer バージョン 2.0 以降でのみサポートされています。
SSLを使用してアプリケーションのセキュリティを維持する
Web サーバーのセキュリティ機能として、Secure Sockets Layer (SSL) 3.0 プロトコルは、ユーザーとの暗号化された通信接続を確立するための安全な仮想的かつ透過的な方法を提供します。 SSL は Web コンテンツの認証を保証し、制限された Web サイトにアクセスするユーザーの身元を確実に確認できます。
SSL を使用すると、制限された ASP アプリケーションにアクセスしようとするユーザーに、サーバーとの暗号化された接続を確立するよう要求できます。これにより、ユーザーとアプリケーションの間で交換される重要な情報が傍受されるのを防ぐことができます。
インクルードされるファイルのセキュリティの維持 保護されていない仮想ルート ディレクトリにある .asp ファイルから、SSL が有効なディレクトリにあるファイルをインクルードする場合、インクルードされたファイルには SSL が適用されません。したがって、SSL が確実に適用されるようにするには、インクルード ファイルとインクルード ファイルの両方が SSL 対応ディレクトリにあることを確認してください。
クライアント認証 ASP アプリケーションへのアクセスを制御する非常に安全な方法は、ユーザーにクライアント認証によるログインを要求することです。顧客認証情報は、ユーザーの身元情報を含むデジタル ID カードであり、パスポートや運転免許証などの従来の身分証明書と同じように機能します。ユーザーは通常、委託された第三者機関から顧客資格を取得し、資格証明書を発行する前にユーザーの本人情報を確認します。 (通常、このような組織は名前、住所、電話番号、組織名を尋ねます。この情報の詳細レベルは、与えられたステータスのレベルによって異なります。)
資格の検証が必要なアプリケーションにユーザーがログインしようとすると、ユーザーの Web ブラウザはユーザーの資格情報を自動的にサーバーに送信します。 Web サーバーの Secure Sockets Layer (SSL) 資格マッピング機能が正しく構成されている場合、サーバーは ASP アプリケーションへのアクセスを許可する前にユーザーの ID を検証できます。
資格認定を処理するための ASP スクリプト ASP アプリケーション開発者は、資格が存在するかどうかを確認し、資格フィールドを読み取るためのスクリプトを作成できます。たとえば、資格からユーザー名フィールドや会社名フィールドにアクセスできます。 Active Server Pages は、Request オブジェクトの ClientCertificate コレクションに資格情報を保存します。
Web サーバーは、ASP を通じて処理される前に、クライアントの資格を受け入れるか要求するように構成されている必要があります。そうしないと、ClientCertificate コレクションが空になります。