Shridhar Salunkhe Ответов: 2

Вход в систему с использованием XML-данных


Я пытаюсь проверить учетные данные для входа в систему из XML-файла

Что я уже пробовал:

Я попробовал следующий код,
Любые предложения, как я использовал.
это показывает, что он не может быть преобразован в bool.

<pre>protected void Submit_Click(object sender, EventArgs e)
        {
            string Username = txtUsername.Text;
            string Password = EncDec.Encrypt(txtPassword.Text);
            string FilePath = Server.MapPath("~/Logs/Login.xml");
            XDocument Loginxml = new XDocument();
            var LoginCheck = Loginxml.Descendants("userDetails")
                .Where(x => (string)x.Attribute("Username") == Username && (string)x.Attribute("Password") == Password );
            if (LoginCheck)
            {
                DisplayMessage.Visible = true;
                DisplayMessage.Text = "Login Successful";
                Response.Redirect("AdminMaster.aspx");
            }
            else
            {
                DisplayMessage.Visible = true;
                DisplayMessage.Text = "Invalid Username/Password";
            }
        }



XML-содержимое:-
<userDetails Username="TestAdmin"  EmailID="shridhar.salunkhe@grassdew.com" Password="YhY3rY4RCt9XVUiNfaOKmCMP7HADqexWdFHfXc4k3hQ=" />

Richard Deeming

Это похоже на нарушение безопасности, ожидающее своего часа!

Если только вы не предпримете конкретных шагов для его защиты, кто угодно можно скачать Logs/Login.xml файл и прочитать все учетные данные для вашего сайта.

Вы храните пароли в виде обычного текста, поэтому им даже не нужно прилагать никаких усилий, чтобы использовать учетные данные-просто скопируйте и вставьте, и вы вошли в систему.

Кроме того, поскольку вы не используете никакой контроль доступа, нет ничего, что могло бы помешать пользователю перейти непосредственно к AdminMaster.aspx без необходимости входить в систему.

Не пытайтесь заново изобрести колесо. Вместо этого используйте одну из встроенных систем безопасности - например, Личность ASP.NET [^].

2 Ответов

Рейтинг:
11

M,AqibShehzad

Вот 100% полный рабочий код вашей проблемы

string Username = "TestAdmin";
       string Password = "YhY3rY4RCt9XVUiNfaOKmCMP7HADqexWdFHfXc4k3hQ=";
       string FilePath = Server.MapPath("~/Login.xml");
       XDocument Loginxml = XDocument.Load(FilePath);
       var LoginCheck = Loginxml.Descendants("userDetails")
                .Where(x => (string)x.Attribute("Username") == Username &&      (string)x.Attribute("Password") == Password);
       if (LoginCheck.Any())
       {

           Response.Redirect("AdminMaster.aspx");
       }
       else
       {
           Response.Redirect("Login.aspx");
       }


Шаг 1: вы пропустили загрузку файла

XDocument Loginxml = XDocument.Load(FilePath);


Шаг 2: он показывает, что он не может быть преобразован в bool, потому что он возвращает перечислимый тип, но вы объявили его использовать как bool, лучше использовать способ, которым я вставил предложенное решение.


Рейтинг:
1

Bryian Tan

Код выглядит немного странно

1. XML-документ не был загружен

Эта линия

XDocument Loginxml = XDocument.Load();

Должно быть
XDocument Loginxml = XDocument.Load(FilePath);

2. LoginCheck-это тип IEnumerable, а не логический, возможно, код должен проверить, возвращает ли запрос какой-либо результат, я предполагаю, что каждое имя пользователя и пароль уникальны

if (LoginCheck.Count() == 1)
            {

            }
            else
            {

            }