Я делаю проект, где мне нужно создать систему VLE для школьного сайта. Я использую визуальный веб-разработчик 2008, C# и базу данных SQL. Что мне нужно сделать, когда учащийся регистрируется при использовании своего имени пользователя и пароля, они должны иметь свою конкретную информацию, отображаемую из базы данных (например, имя курса, идентификатор студента, адрес электронной почты и имя и т. Д. Из SQL). Я создал страницу входа:получить пользовательскую информацию из базы данных после входа в систему
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["RegConnectionString"].ConnectionString);
con.Open();
string cmdStr = "select count (*) from Registration where UserName ='" + TextBox1.Text + "'";
SqlCommand checkuser = new SqlCommand(cmdStr, con);
int temp = Convert.ToInt32(checkuser.ExecuteScalar().ToString());
if (temp == 1)
{
String cmdStr2 = "select password from Registration where UserName ='" + TextBox1.Text + "'";
SqlCommand pass = new SqlCommand(cmdStr2, con);
String password = pass.ExecuteScalar().ToString();
con.Close();
if (password == TextBox2.Text)
{
Session["New"] = TextBox1.Text;
Response.Redirect("secure.aspx");
}
else
{
Label1.Visible = true;
Label1.Text = "Invalid Password....!!!";
}
}
else
{
Label1.Visible = true;
Label1.Text = "Invalid UserName....!!!";
}
}
Считается «плохой» специально сообщать «неверный пароль» или «недопустимое имя пользователя». Причина в том, что он эффективно позволяет враждебным знать, когда они получают правильное имя пользователя. При выполнении функций входа в систему существует несколько наборов лучших практик, помогающих разработчикам избежать общих проблем, таких как «не хранить пароли в текстовом виде». Не стоит много искать, чтобы найти их в сети. – StarPilot
Добавление любого старого текста в ваши запросы к базе данных плохо для безопасности (уязвимо для SQL Injection) и производительности (не может повторно использовать планы запросов). Любой может уничтожить вашу базу данных с вашим кодом, как это. Правильный способ сделать это - это параметризованные запросы - см. [This] (http://www.sommarskog.se/dynamic_sql.html#SQL_injection) для некоторого хорошего фона на SQL Injection. – Bridge
Используйте это для справки http://www.codeproject.com/Articles/12907/Simple-Stored-Procedures-in-NET – neo