2013-10-31 75 views
1

我在应用程序上设计了一个基本的电子邮件和密码表单。它使用链接到它的数据库中的用户名和密码。我遇到1个问题,我如何才能考虑区分大小写?例如像:SQL中的大小写敏感性

正确的细节:电子邮件:[email protected]密码:gordan123

但是它允许密码为:Gordan123,GORDAN123和GoRdAn123等我怎么做它,所以它只能接受考虑到区分大小写的数据库中的一个?

对不起,我不知道如何更好地描述这个问题。代码如下:

SQL_Str = "CREATE TABLE Table_UserDetails (UserImageLocation TEXT, FirstName VARCHAR(25), LastName VARCHAR(25), Gender VARCHAR(6), EmailAddress VARCHAR(40) PRIMARY KEY, UserPassword VARCHAR(25))" 
     dbCommand = New OleDbCommand(SQL_Str, dbConnector) 
     dbCommand.ExecuteNonQuery() 

Private Sub BtnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnLogin.Click 
    If LoginDetailsSearch() = True Then 
     FormMain.Show() 
    Else 
     MsgBox("The E-Mail address or password you entered is not valid, please check your entries and try again.", MsgBoxStyle.Critical, "Error") 
    End If 

End Sub 
Function LoginDetailsSearch() As Boolean 
    dbConnector.Open() 
    SQL_Str = "SELECT * FROM Table_UserDetails" 

    dbDataAdapter = New OleDbDataAdapter(SQL_Str, dbConnector) 
    dbDataAdapter.Fill(dbDataSet, "Users") 

    For Each Record In dbDataSet.Tables("Users").Rows 
     If txtEmail.Text = Record.Item(4) And txtPassword.Text = Record.Item(5) Then 
      SelectedUserFirstName = Record.Item(1) 
      SelectedUserLastName = Record.Item(2) 
      dbConnector.Close() 
      Return True 
     End If 
    Next 

    dbConnector.Close() 
    Return False 
End Function 

回答

5

不要以纯文本形式存储密码。存储密码的散列或腌制散列并比较你的散列。

+1

hooray不以纯文本形式存储 – Randy

+0

我不想让系统安全,但我只是希望它能够进行比较和正常工作 – user2177940

+4

如果使用散列函数,则不需要担心大小写敏感性,因为那些会产生不同的哈希值。这也会更容易实施,因为它从一开始就是安全的。 – Tim