1

asp.netwebformsプロジェクトがあります。保護が必要なすべての領域で、アプリケーション全体にビジネスロジック認証チェックを追加する標準的な方法は何ですか?

たとえば、ページXは、「管理者」というラベルの付いたユーザーのみが表示できます。

より複雑な例:ユーザーA、B、およびCを管理するユーザーのグループに属するユーザーのみが、ユーザーA、B、またはCのプロファイル情報を変更できます。

必要な認証チェックの数百の場所とタイプを何度も続けることができますが、基本的にこれを行う唯一の方法は、すべてのボタンクリックハンドラー、page_load、GridView rowChange、の最初に多くのカスタムコードを実行することです。など、最初にいくつかのビジネスロジックをチェックし、次にそれを許可するか、または戻ります。

より一般的には、基本的にすべてのポストバックに対してこれらのビジネスロジック認証チェックを行う必要がありますか?

4

1 に答える 1

1

チェックがロールベースで分厚い場合(たとえば、「管理者」ロールはこのページのすべてのコードを実行できますが、他の誰も実行できません)、FormsAuthentication CookieにキャッシュされたロールとPrinciplePermission属性(http://msdn.microsoftなど)を使用できます。 .com / en-us / library/ms731200.aspx これらの属性をメソッドに配置することもできます。ただし、複雑な承認チェックは許可されておらず、コードを再コンパイルせずに変更するのは簡単ではありません。

チェックが部分的にのみ役割ベースで詳細な場合、たとえば、秘書はこれをクリックでき、管理者はこれを表示でき、ジョーは週末にこれを表示できます。次に、コードビハインドで承認チェックが必要です。結果を安全な場所にキャッシュできない限り、権限チェックを再実行する必要があります。ViewStateが暗号化されている場合は、結果をViewStateにキャッシュできます。

ポストバックで承認をチェックしないと、無効なボタンや非表示のボタンなどでイベントを呼び出すカスタム細工された投稿に対して脆弱になります。ビューステートを暗号化し、イベント検証をオンのままにしておくことで、この種の問題も軽減できます。

重複を最小限に抑えるために、コードをユーティリティクラスと基本クラスに分解します。

于 2012-08-13T21:50:01.103 に答える