2

asp.netwebformsプロジェクトがあります。そこでは、「管理者」が画面にアクセスして、新しいユーザー(CreateUser.aspx)を作成するフォームを送信することができます。

そのユーザーの権限が後で管理者未満に変更された場合、そのユーザーはその画面にアクセスして新しいユーザーを作成できなくなります。ただし、管理者だったときから新しいユーザーを作成するための正確なWebリクエストを保存した場合は、これを再生して新しいユーザーを作成できます。

ランダムな人がこのフォームを送信することはできませんが、アクティブなセッションIDを推測しない限り(各フォーム送信でチェックされるのはそれだけです)。

CreateUserは、管理機能の多くの例の1つです。ユーザーがこれらの異なるフォーム送信のそれぞれの管理者であることを検証するためのこれに対する適切な解決策はありますか(asp.netでこれを行うためのクリーンな方法がわかりません)?または、ログアウト時にセッションを期限切れにして、セッションIDを再利用しないことは許容されますか?asp.netには、このタイプの攻撃から保護するためのその他のセキュリティ機能が組み込まれていますか?

4

2 に答える 2

1

1つの方法は、基本クラス(これはクラスを継承します-"page")を持ち、すべてのaspxページはこの基本クラスを継承する必要があります。これにより、aspxページが読み込まれるたびに、ベースのpageLoadメソッドが呼び出されます。この方法では、認証と承認を確認できます。

    public class BasePage : System.Web.UI.Page
    {

        public BasePage()
        {
            this.Load += new EventHandler(BasePage_Load);
        }

     void BasePage_Load(object sender, EventArgs e)
        {
     //Check authentication/authorized
    //if authenticated/authorized leave it.. If not redirect to error page
        }
    }

    public partial class Forms_CreateUser : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }

    public partial class Forms_CreateRole : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }
于 2012-08-03T21:06:43.493 に答える
0

CreateUser.aspxへのアクセスを管理者ロールのユーザーに制限するためのユーザーweb.configの承認設定:http ://support.microsoft.com/kb/316871 (属性名はではrolesなくusers)。

于 2012-08-06T11:51:10.087 に答える