디버거에서이 코드를 실행하여 쿼리가 행을 반환하는지 확인할 수 있습니까?
제안 :
이 같은 쿼리를 매개 변수화 고려 :
Dim conn As New SqlConnection(_connectionString)
conn.Open()
Dim s As String = "SELECT user_password FROM MyUsers WHERE user_logon_id = @user_login_id"
Dim cmd As New SqlCommand(s)
cmd.Parameters.Add("@user_login_id", Me.user_logon_id.Text)
Dim reader As SqlDataReader = cmd.ExecuteReader()
해시
데이터베이스 테이블에 사용자 이름과 암호 경기에서 선택 고려 어떤 방법으로 암호를 입력합니다. 결과가 하나의 레코드 인 경우 로그인이 성공했습니다.
Dim s As String = "SELECT userid FROM MyUsers WHERE user_logon_id = @user_login_id and [email protected]_password"
전체 코드
Protected Sub butSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles butSubmit.Click
Dim myReader As Data.SqlClient.SqlDataReader
Dim mySqlConnection As Data.SqlClient.SqlConnection
Dim mySqlCommand As Data.SqlClient.SqlCommand
'Establish the SqlConnection by using the configuration manager to get the connection string in our web.config file.
mySqlConnection = New Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString1").ToString())
Dim sql As String = "SELECT userid FROM MyUsers WHERE user_logon_id = @user_login_id and [email protected]_password"
mySqlCommand = New Data.SqlClient.SqlCommand(sql, mySqlConnection)
cmd.Parameters.Add("@user_login_id", Me.user_logon_id.Text)
cmd.Parameters.Add("@user_password", Me.user_password.Text)
Try
mySqlConnection.Open()
myReader = mySqlCommand.ExecuteReader()
If (myReader.HasRows) Then
'Open page with users and roles
Dim message As String = "Correct password"
Dim style As MsgBoxStyle = MsgBoxStyle.OkOnly
Dim title As String = "Authenticated"
MsgBox(message, style, title)
End If
Catch ex As Exception
Console.WriteLine(ex.ToString())
Finally
If Not (myReader Is Nothing) Then
myReader.Close()
End If
If (mySqlConnection.State = Data.ConnectionState.Open) Then
mySqlConnection.Close()
End If
End Try
End Sub
'없음' "나는. 비밀번호를 암호화에 대해 걱정할 필요가 없습니다",하지만 당신은 암호 해시에 대해 걱정해야한다. 명시 적으로 명시된 요구 사항이 아니더라도 항상 수행해야합니다. – David
오류를 찾으셨습니까? 여기서 문제가되는 것은 무엇입니까? 사용자 이름과 암호를 확인하고 한 SQL에서 행 수를 확인하도록 쿼리를 변경 한 다음 execute 스칼라를 사용하여 카운트를 얻고 카운트 인증 사용자를 기반으로합니다. –
SQL 인젝션에 대해 아무 것도 말하지 ... – RBarryYoung