Состояние входа в систему не удалось
Я написал приложение для входа в систему с помощью сеанса на языке c# asp.net .
но вместо того, чтобы перейти на страницу приветствия. сообщение "вход пользователя sa не удался".
Логика бизнеса, стоящая за домом.aspx:
try { conn = new SqlConnection("Data Source=LENOVO;Initial Catalog=sample;User ID=sa;Password=***********"); conn.Open(); Response.Write("connection to databaase is established"); String query = "select count(*) from tblRegister where name='" + txtuser.Text + "'and Password'" + txtpass.Text + "'"; cmd = new SqlCommand(query, conn); String output = cmd.ExecuteScalar().ToString(); if (output == "1") { Session["user"] = txtuser.Text; Response.Redirect("~/Welcome.aspx"); } else { Response.Write("Login failed"); } } catch (Exception ex) { Response.Write("sorry" + ex.Message + "\n"); Response.Write(ex.HelpLink); //Response.Write(ex.InnerException); } finally { conn.Close(); Response.Write("Connection closed"); } } }
Что я уже пробовал:
Я уже пробовал это сделать:
String query = "select * from tblRegister where name='" + txtuser.Text + "'and Password'" + txtpass.Text + "'";
tusharkaushik
Я пробовал, но результат все равно нулевой
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
Richard Deeming
НИКОГДА храните пароли в виде обычного текста.
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]
Richard Deeming
И почему вы заново изобретаете колесо? ASP.NET имеет несколько совершенно хороших встроенных систем аутентификации - например, Личность ASP.NET [^]
Richard Deeming
Да, и я чуть не забыл: заявки должны быть НИКОГДА* подключитесь к базе данных как sa
Это неограниченная учетная запись, которая может быть использована для уничтожения вашей базы данных, вашего сервера или даже вашей сети (в зависимости от того, как настроен SQL).
Используйте определенного пользователя SQL, который имеет только те разрешения, которые требуются вашему приложению.
* Единственным исключением будет приложение, предназначенное для репликации частей SQL Server Management Studio, которые, очевидно, должны быть заблокированы как можно более плотно. И даже тогда я бы все равно рекомендовал использовать конкретную учетную запись в sysadmin
роль, а не то, что sa
счет.