Asp.net-security

提供:Dev Guides
移動先:案内検索

ASP.NET-セキュリティ

サイトにセキュリティを実装するには、次の側面があります。

  • 認証:ユーザーの身元と信頼性を保証するプロセスです。 ASP.NETは、4種類の認証を許可します。
  • Windows認証
  • フォーム認証
  • パスポート認証
  • カスタム認証
  • 承認:特定のロールを定義して特定のユーザーに割り当てるプロセスです。
  • 機密性:クライアントブラウザとWebサーバー間のチャネルの暗号化が含まれます。
  • 整合性:データの整合性を維持する必要があります。 たとえば、デジタル署名を実装します。

フォームベース認証

従来、フォームベース認証では、web.configファイルを編集し、適切な認証コードを使用してログインページを追加する必要がありました。

web.configファイルを編集して、次のコードを書き込むことができます。

<configuration>

<system.web>
   <authentication mode="Forms">
      <forms loginUrl ="login.aspx"/>
   </authentication>

   <authorization>
      <deny users="?"/>
   </authorization>
</system.web>
...
...
</configuration>

上記のコードスニペットに記載されているlogin.aspxページには、認証用のユーザー名とパスワードがハードコードされた次のコードビハインドファイルを含めることができます。

protected bool authenticate(String uname, String pass)
{
   if(uname == "Tom")
   {
      if(pass == "tom123")
         return true;
   }

   if(uname == "Dick")
   {
      if(pass == "dick123")
         return true;
   }

   if(uname == "Harry")
   {
      if(pass == "har123")
         return true;
   }

   return false;
}

public void OnLogin(Object src, EventArgs e)
{
   if (authenticate(txtuser.Text, txtpwd.Text))
   {
      FormsAuthentication.RedirectFromLoginPage(txtuser.Text, chkrem.Checked);
   }
   else
   {
      Response.Write("Invalid user name or password");
   }
}

FormsAuthenticationクラスが認証プロセスを担当していることに注意してください。

ただし、Visual Studioでは、Webサイト管理ツールを使用して、コードを作成せずにシームレスに簡単にユーザーの作成、認証、および承認を実装できます。 このツールを使用すると、ユーザーとロールを作成できます。

これとは別に、ASP.NETには、すべてのジョブを実行するコントロールを備えた既製のログインコントロールセットが付属しています。

フォームベースのセキュリティの実装

フォームベースの認証を設定するには、次のものが必要です。

  • 認証プロセスをサポートするユーザーのデータベース
  • データベースを使用するWebサイト
  • ユーザーアカウント
  • 役割
  • ユーザーとグループのアクティビティの制限
  • ユーザーのログインステータスおよびその他の情報を表示するデフォルトページ。
  • ユーザーがログイン、パスワードを取得、またはパスワードを変更できるようにするログインページ

ユーザーを作成するには、次の手順を実行します。

ステップ(1):[Webサイト]→ [ASP.NET構成]を選択して、Webアプリケーション管理ツールを開きます。

ステップ(2):[セキュリティ]タブをクリックします。

セキュリティタブ

ステップ(3):[インターネットから]ラジオボタンを選択して、認証タイプを[フォームベース認証]に選択します。

認証タイプ

ステップ(4):[ユーザーの作成]リンクをクリックして、ユーザーを作成します。 すでにロールを作成している場合は、この段階でユーザーにロールを割り当てることができます。

ユーザーリンクの作成

ステップ(5):Webサイトを作成し、次のページを追加します。

  • Welcome.aspx
  • Login.aspx
  • CreateAccount.aspx
  • PasswordRecovery.aspx
  • ChangePassword.aspx

ステップ(6):ツールボックスのログインセクションからWelcome.aspxにLoginStatusコントロールを配置します。 LoggedInとLoggedOutの2つのテンプレートがあります。

LoggedOutテンプレートにはログインリンクがあり、LoggedInテンプレートにはコントロールにログアウトリンクがあります。 [プロパティ]ウィンドウから、コントロールのログインおよびログアウトテキストプロパティを変更できます。

ログインステータスコントロール

ステップ(7):ツールボックスからLoginViewコントロールをLoginStatusコントロールの下に配置します。 ここには、ユーザーがログインしているかどうかに基づいて表示されるテキストやその他のコントロール(ハイパーリンク、ボタンなど)を配置できます。

このコントロールには、匿名テンプレートとLoggedInテンプレートの2つのビューテンプレートがあります。 各ビューを選択し、各テンプレートに表示されるユーザー用のテキストを作成します。 テキストは、赤でマークされた領域に配置する必要があります。

ログインビューコントロール

ステップ(8):アプリケーションのユーザーは開発者が作成します。 ユーザーにユーザーアカウントの作成を許可することができます。 このため、LoginViewコントロールの下にリンクを追加します。これは、CreateAccount.aspxページにリンクする必要があります。

ステップ(9):CreateUserWizardコントロールをアカウントの作成ページに配置します。 このコントロールのContinueDestinationPageUrlプロパティをWelcome.aspxに設定します。

CreateUserWizardコントロール

ステップ(10):ログインページを作成します。 ページにログインコントロールを配置します。 LoginStatusコントロールは、Login.aspxに自動的にリンクします。 このデフォルトを変更するには、web.configファイルで次の変更を行います。

たとえば、ログインページにsignup.aspxという名前を付ける場合は、web.configの<authentication>セクションに次の行を追加します。

<configuration>
   <system.web>
      <authentication mode="Forms">
         <forms loginUrl ="signup.aspx" defaultUrl = “Welcome.aspx”/>
      </authentication>
   </system.web>
</configuration>

ステップ(11):ユーザーはしばしばパスワードを忘れます。 PasswordRecoveryコントロールは、ユーザーがアカウントにアクセスするのに役立ちます。 ログインコントロールを選択します。 スマートタグを開き、[テンプレートに変換]をクリックします。

コントロールのUIをカスタマイズして、ログインボタンの下にハイパーリンクコントロールを配置します。これはPassWordRecovery.aspxにリンクする必要があります。

PasswordRecoveryコントロール

ステップ(12):パスワード回復ページにPasswordRecoveryコントロールを配置します。 このコントロールには、ユーザーにパスワードを送信するためのメールサーバーが必要です。

PasswordRecovery control2

ステップ(13):Welcome.aspxのLoginViewコントロールのLoggedInテンプレートにChangePassword.aspxページへのリンクを作成します。

ChangePasswordコントロール

ステップ(14):パスワード変更ページにChangePasswordコントロールを配置します。 このコントロールには2つのビューもあります。

ChangePassword control2

次に、アプリケーションを実行し、さまざまなセキュリティ操作を観察します。

ロールを作成するには、Webアプリケーション管理ツールに戻り、[セキュリティ]タブをクリックします。 「ロールの作成」をクリックして、アプリケーションのロールを作成します。

Webアプリケーション管理

[ユーザーの管理]リンクをクリックして、ユーザーに役割を割り当てます。

ユーザーの管理

IIS認証:SSL

Secure Socket LayerまたはSSLは、安全な接続を確保するために使用されるプロトコルです。 SSLを有効にすると、ブラウザはサーバーに送信されるすべてのデータを暗号化し、サーバーから送信されるすべてのデータを復号化します。 同時に、サーバーはブラウザーとの間でやり取りされるすべてのデータを暗号化および復号化します。

セキュア接続のURLは、HTTPではなくHTTPSで始まります。 安全な接続を使用してブラウザに小さなロックが表示されます。 ブラウザがSSLを使用して安全な接続を介してサーバーとの通信を最初に試みると、サーバーはデジタル証明書を送信することで自身を認証します。

SSLを使用するには、信頼できる証明機関(CA)からデジタルの安全な証明書を購入し、Webサーバーにインストールする必要があります。 以下は、信頼され評判が高い認証機関の一部です。

  • www.verisign.com
  • www.geotrust.com
  • www.thawte.com

SSLはすべての主要なブラウザーとサーバーに組み込まれています。 SSLを有効にするには、デジタル証明書をインストールする必要があります。 さまざまなデジタル証明書の強度は、暗号化中に生成されるキーの長さによって異なります。 長さが長くなればなるほど、証明書の安全性が高まり、接続がより安全になります。

Strength Description
40 bit Supported by most browsers but easy to break.
56 bit Stronger than 40-bit.
128 bit Extremely difficult to break but all the browsers do not support it.