我的用户名和密码不区分大小写C#

时间:2018-06-06 18:02:40

标签: c# sql

我已使用此代码制作登录表单,但我的用户名和密码现在不区分大小写。

private void btnLogin_Click(object sender, EventArgs e)
{
    string sqlquery = "SELECT * FROM users WHERE username = '"+txtUsername.Text.Trim()+"' AND password = '"+txtPassword.Text.Trim()+"' ";
    SqlDataAdapter da = new SqlDataAdapter(sqlquery,con);
    DataTable dt = new DataTable();
    da.Fill(dt);
    if (dt.Rows.Count > 0)
    {
        MessageBox.Show("Hi " + txtUsername.Text + ", Welcome to the program!");
    }
    else
    {
        MessageBox.Show("Incorrect Username or Password");
    }

2 个答案:

答案 0 :(得分:3)

这有很多不妥之处。两个大的但是如下:

1:不要,我的意思是不要在你的数据库中存储明文密码。永远。使用现有的经过良好测试的实现使其成为安全哈希。

2:您的SQL查询非常容易受到SQL注入攻击。例如,当我以“'; DROP ALL TABLES;”登录时,它将删除数据库中的所有内容。永远不要将原始用户输入放入您的SQL查询..永远。

简而言之:不要使用自己的认证。使用众多经过验证的真实身份验证库之一,否则您最终会伤害自己/您的公司/其他人。

答案 1 :(得分:-1)

我在这个答案中没有提到很多问题(纯文本密码,没有参数的内联sql等)。但是会说:我希望这只是作为一个例子。

也就是说,SQL Server默认情况下不执行区分大小写的搜索。为此,您需要使用整理。这里给出了一个很好的答案: How to do a case sensitive search in WHERE clause (I'm using SQL Server)?