2

ASP.NET アプリの診断ページを作成することを考えています。これは主に、問題を診断するためのアプリケーションに関する詳細情報を取得するために管理者が使用することを目的としています。

ページに含まれる可能性のある情報の例:

  • System.Environment.MachineName (Web ファームのシナリオで役立つ場合があります)
  • System.Environment.Version
  • 環境.ユーザー名
  • データベース名
  • 現在のユーザーのセッション ID

このページの情報の一部は、セキュリティの観点から機密情報である可能性があります。以前にこの種のページを作成したことがある場合、このページへのアクセスにどのようなセキュリティを設定しましたか? .

編集 :

追加する必要があります - 特定の (つまり実際の) エンド ユーザーとしてログインしているときに、このページを表示すると便利な場合があります。たとえば、特定のユーザーとしてログインした場合にのみ問題を再現できるとします。そのユーザーの診断ページを表示できると便利な場合があります。たとえば、現在のセッション ID を知っていると、デバッグに役立つ場合があります。

編集2:

この診断ページは、実際には 2 つの異なるページであるべきだと考え始めています。1 つはすべてのユーザーに同じもの (データベース名、CLR バージョンなど) を表示するもので、もう 1 つはセッションごとに異なるもの (ブラウザー情報、セッション ID など) を表示するものです。次に、最初のページのセキュリティをさらにロックダウンできます。

4

4 に答える 4

2

はい、以前にこの種のページを追加したことがあります (そして便利だと思いました)。セキュリティは非常に単純で、ページにはパスワード フォームが含まれていました。サーバー側のコードは、このパスワードを構成された値と照合し、正しい場合は実際のコンテンツを表示し、ユーザーのセッションに値を設定して、ユーザーが開発者として認証されたことを伝え、次に再度プロンプトが表示されないようにします時間。

ページの URL がどこにも公開されていなかったので、あいまいさによるセキュリティも少しあったと思います。

また、ページ上で本当に機密性の高いものを公開しないように注意しました. たとえば、アプリケーションの構成値を表示することはできましたが、「パスワード」が含まれているものはすべてマスクされていました。本当にパスワードを確認したい場合は、サーバーへのリモート デスクトップ セッションを開くことができます。

于 2010-05-06T00:46:36.060 に答える
1

これを行うには、他にもいくつかの方法があります。

  • Web アプリケーションにユーザー認証がある場合は、ユーザーが管理者としてフラグが立てられているか、何らかの管理者ロールに属していることを確認して、このページへのアクセスを制限します。

  • 単純なif (Request.IsLocal) ...型チェックを使用しますが、これの欠点は、サーバーに接続して Web サイトをローカルで参照する必要があることです。これは常に可能であるとは限りません。ただし、これには、主要なシステム設定を簡単に表示できるという利点があります。

個人的には、ローカル リクエストは常にアクセスを許可し、非ローカル リクエストは管理者ユーザーを必要とする両方の方法を組み合わせて使用​​しました。if (!Request.IsLocal && !IsAdminUser()) throw new SecurityException().

また、私は Evgeny に同意します。このページでは、機密情報 (アプリケーションの接続文字列やパスワードなど)を公開しないように注意してください。

于 2010-05-06T00:58:26.433 に答える
0

エラーページの堅牢なソリューションが必要なようです。構成可能なセキュリティを含む堅牢なエラー ページの良い例として、 Elmah ( http://code.google.com/p/elmah/ ) のようなオープン ソース プロジェクトを調べます。アイデアを提供するために、セキュリティの設定を説明する Elmah の構成に関する投稿を次に示します。私がテストしたセキュリティでは、ドメイン資格情報を使用してログインできます。

于 2010-05-06T15:25:42.263 に答える
0

フォーム認証を使用し、そのページにアクセスできるユーザーを 1 人または 2 人設定します。そうすれば、サイトが展開されたら、パスワードを変更してアクセスを取り消すことができます。

于 2010-05-06T05:04:17.340 に答える