簡體   English   中英

我的用戶名和密碼在不區分大小寫的C#中

[英]My username and password in not case sensitive C#

我已經使用此代碼制作了登錄表單,但是我的用戶名和密碼現在不區分大小寫。

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");
    }

這有很多錯誤。 但是,以下兩個主要方面是:

1:請勿,我的意思是請勿在您的數據庫中存儲純文本密碼。 曾經 使用現有的經過良好測試的實現,使其成為安全的哈希。

2:您的sql查詢非常容易受到SQL注入的攻擊。 例如,當我以“';; DROP ALL TABLES;--”登錄時,它將刪除數據庫中的所有內容。 永遠不要將原始用戶輸入內容輸入到您的sql查詢中。

簡而言之:請勿滾動您自己的認證。 使用大量嘗試過且真實的身份驗證庫之一,否則最終會傷害到您自己/您的公司/其他人。

我在此答案中不會解決很多問題(純文本密碼,不帶參數的內聯sql等)。 但是會說:我希望這只是作為一個例子。

也就是說,SQL Server默認情況下不執行區分大小寫的搜索。 為此,您需要使用排序規則。 這里已經給出了一個很好的答案: 如何在WHERE子句中進行區分大小寫的搜索(我正在使用SQL Server)?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM