Обмен пользовательскими данными даже без использования сессий - asp.net mvc - PullRequest
0 голосов
/ 14 апреля 2019

Когда на сайт зашли несколько пользователей, информация о последних вошедших пользователях видна всем ранее вошедшим в систему пользователям.Это вызывает серьезную проблему уязвимости.

Вместо этого я не использую переменные сеанса для хранения пользовательских данных. После того, как пользователь вошел на мой веб-сайт, я сохраняю его учетные данные в файле класса помощника, как показано ниже.И на всех других моих страницах я использую детали пользователя, такие как UserData.userid, UserData.username и т. Д. *

public class UserData
    {
        public static int userid;
        public static string username;
        public static string useremail;

        public int user_id
        {
            get { return userid; }
            set { userid = value; }
        }

        public string user_name
        {
            get { return username; }
            set { username = value; }
        }

        public string user_email
        {
            get { return useremail; }
            set { useremail = value; }
        }
}

1 Ответ

5 голосов
/ 14 апреля 2019

Вы объявляете поля этого класса как статические.Это означает, что каждый экземпляр класса UserData будет иметь одинаковые значения в этих полях.
См. Здесь документацию по статическому ключевому слову , и когда вы устанавливаете эти значения, вы устанавливаете одинаковые значения для каждого экземпляра, который все еще существует.в вашей программе.

Вам необходимо удалить ключевое слово static, но учитывая тот факт, что вы не используете эти поля, вы можете удалить их и просто изменить свой класс на использование , реализованное автоматическисвойства вместо

public class UserData
{
    public int user_id {get;set;}
    public string user_name {get;set;}
    public string user_email {get;set;}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...