3

非常に単純な質問: Web プロジェクトに管理サイトがあります。では、どうすれば安全にできますか?

私が今まで持っているもの:

  • userID と userlevel を持つデータベース処理ユーザー
  • 管理マスター ページ (すべての管理サイトを含む) のページロードには、ユーザー ID が適切か (データベースからユーザーを取得するか)、およびユーザーレベルが適切かどうかを確認する句があります。
  • そうでない場合は、通常のマスター ページで Default.aspx にリダイレクトします。
  • はいの場合は、探しに行きます

それは本当にどのくらい安全ですか?


編集:

  • ユーザー ID は、サーバー上のセッションに保存されます。
  • ログインを保存する方法はありません (Cookie なし)。
  • ユーザーは、セッションでユーザー ID を取得するためにログインする必要があります
  • ログインは、ユーザー名、パスワード、IP、loginsucceeded、および userID とともにデータベース テーブル user_log に保存されます。
4

2 に答える 2

1

基本的な考え方は問題ないようです。それはすべて、チェックを行うためにその UserID を取得する方法にかかっています。userID がクエリ文字列として渡されている場合、それは非常に悪いことです。何らかのタイプの事前承認を介してセッションに保存されている場合は、より良い方法です。SSL、IP チェックなどを使用している場合は、セキュリティ レベルが向上します。

主なことは、確認するユーザーIDを取得する方法です。それがエクスプロイトが発生する場所です。そのプロセスを保護すれば、セットアップに問題はありません。

編集:更新に基づいて、これは問題ないように見えますが、これが本当に必要な安全性にも依存します。サインインページの安全性は? SSLを使用していますか?セッションハイジャックの心配はありますか? セッションから UserID フェッチを行うときに、IP を userID とともに保存し、保存された IP に対して要求 IP を検証しないのはなぜですか?

世の中には非常に多くのセキュリティ ソリューションがあります。特定のアプリケーションに必要なセキュリティ レベルを確保するには、どこまで安全に行く必要があるかを判断する必要があります。

于 2009-11-04T17:12:49.467 に答える
0

統合 Windows 認証を使用します。

  1. IIS マネージャーで、[ディレクトリ セキュリティ] タブをクリックします。
  2. 「匿名アクセス」のチェックを外す
  3. 「統合Windows認証」にチェックを入れる

これにより、独自のソリューションを使用する代わりに、ドメイン アカウントを変更することで、管理サイトへの権限を持つユーザーを管理できます。ログインしているユーザーの資格情報は、Environment クラスを介して引き続き取得できます。これを使用して、データベースに保存する各ユーザーの Web 固有のプロパティを関連付けることができます。これには、タイムアウト、ブラウザが閉じられた場合の再ログイン要件などを自動的に処理できるという利点もあります。

ASP.NET サービス アカウント ログインを通じてすべてを処理するのではなく、個々のユーザー アカウントを SQL サーバーに追加しているように聞こえますが、ソリューションはほとんど問題ないように見えます。個々のユーザー アカウントをデータベースに追加することは避けたいと思います。ASP.NET では、無駄な手順を踏まない限り、サイトにログインしているユーザーではなく、ASP.NET サービス アカウントが DB 接続のために認証されます。

于 2009-11-04T17:12:06.377 に答える