0

このプロファイル編集ページがありますが、ユーザーが URL の ID を変更すると、他のユーザーのプロファイルを変更できます。URL の他の ID へのアクセスを拒否するにはどうすればよいですか

 if (!IsPost)
    {
        //if(!Request.QueryString["ID"].IsEmpty()){
        if (!Request.QueryString["UserId"].IsEmpty() && Request.QueryString["UserId"].IsInt())

        {
            UserId = Request.QueryString["UserId"];
            var db = Database.Open("mystring");
            var dbCommand = "SELECT * FROM UserProfile WHERE UserId = @0";
            var row = db.QuerySingle(dbCommand, UserId);

            if (row != null)
            {
                Email = row.Email;
                fullname = row.fullname;
                location = row.location;

            }
            else
            {

                ModelState.AddFormError("No Profile was selected.");


            }
4

2 に答える 2

0

それを行うには多くの方法があります。

  1. ユーザーIDをクエリ文字列として渡さないでください。モデルオブジェクトに渡します

  2. クエリ文字列からユーザーIDを渡すことにし、認証が設定されている場合は、クエリ文字列で渡されたユーザーIDをログインユーザーのユーザーIDと一致させることができます。これら2つが一致する場合は、編集のみを許可します

于 2012-06-21T09:46:39.123 に答える
0

ユーザー ID をクエリ文字列パラメーターとして渡すことを許可せずに、暗号化されたフォーム認証 Cookie から読み取ります。

そう:

var UserId = Request.QueryString["UserId"];

なる必要があります:

string username = User.Identity.Name;

これにより、現在認証されているユーザー名が表示され、プロファイルのみが変更されます。

于 2012-06-21T09:45:24.550 に答える