2014-01-17 2 views
0

사용자 이름으로 보호하려는 응용 프로그램에서 작업 중입니다. & 암호가 MS SQL Server에 저장되었습니다. 저는 Visual Basic에서 두 개의 텍스트 상자에 입력 된 텍스트를 SQL 데이터베이스의 Username과 Password로 비교하기 위해 며칠 동안 노력했지만 어떻게 할 수 있는지 알 수 없습니다. databse에 대한 연결이 이미 설정되어 있고 응용 프로그램에서 서버의 데이터를 조작 할 수 있지만 자격 증명을 '비교'하기위한 코드를 파악할 수 없습니다.SQL 응용 프로그램 사용자 이름 및 암호 확인

연결하려는 데이터베이스의 이름이 Members_Details이고 테이블의 이름이 Logins입니다. 로그인에 테이블은 두 개의 열 Name & Passkey 보유

지금까지 시도했습니다 무엇

이 있습니다 (사용자 이름 & 비밀번호.) :

SQL = "Select * from logins " & _ 
      "where Name like '%" & Me.Usernametxt.Text.Trim & "%' AND Passkey LIKE Me.Passwordtxt.Text.Trim & "%'" 

하지만 어디 그 후 이동하는 방법을 알고하지 않습니다/

도움을 주시면 감사하겠습니다. 현재 보안은 문제가되지 않습니다.

+0

Visual Studio는이 방법을 찾기 위해 최선을 다하고 있습니다. 그것은 당신의 코드 라인을 채색했습니다. – peterG

답변

0

이 문제는 sql 텍스트 내에 Passwordtxt 텍스트 상자 값을 포함함으로써 발생합니다.

SQL = "Select * from logins " & _ 
     "where Name like '%" & Me.Usernametxt.Text.Trim & _ 
     "%' AND Passkey LIKE '" & Me.Passwordtxt.Text.Trim & "'" 

그러나, 또한, 앞으로 작은 단계를하고 또한

SQL = "Select * from logins " & _ 
     "where Name like @uname " & _ 
     "AND Passkey = @pass" 

Dim sqlCommand = new SqlCommand(SQL, con) 
sqlCommand.Parameters.AddWithValue("@uname", "%" & Me.Usernametxt.Text.Trim & "%") 
sqlCommand.Parameters.AddWithValue("@pass", Me.Passwordtxt.Text.Trim) 
Using reader = cmd.ExecuteReader() 
    if reader.HasRows Then 
    ' user authenticated 

쓰기, 일반적으로을 보안에 대한 조언을하지 않을 경우, 암호를 정확히 입력해야합니다 (경우 민감하므로) LIKE 연산자와 와일드 카드를 사용하여 검색 할 수 없습니다.
와일드 카드도 사용자 이름에 약간 이상합니다. LIKE 연산자를 사용하여 사용자 이름을 대/소문자를 구분하지 않아도됩니다.

관련 문제