04. maj 2002 - 21:02Der er
10 kommentarer og 2 løsninger
Login System problem
Hejsa
Jeg har et problem med mit loginsystem ... hvis brugeren angiver et brugernavn som ikke ligger i databasen så melder siden fejl. Hvad skal jeg gøre for at rette dette?
Skal bruge hurtig hjælp!
Her er min side:
<%
Dim sSeed Dim sValidBrugernavn Dim sValidPassword Dim sValidHash Dim sBrugernavn Dim sPassword Dim sHash Dim sGruppenavn Dim sInitial Dim sFornavn Dim sEfternavn
Set Conn = Server.CreateObject("ADODB.Connection") Set Rs = Server.CreateObject("ADODB.Recordset") Conn.Open "DBQ=" & Server.Mappath("Login.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
SQL = "SELECT Grupper.Gruppenavn, Bruger.Brugernavn, Bruger.Brugerkode, Bruger.Initial, Bruger.Fornavn, Bruger.Efternavn FROM Bruger INNER JOIN Grupper ON Bruger.Gruppenavn = Grupper.GruppeId WHERE Brugernavn='" & request("brugernavn") & "'" rs.Open SQL, Conn
<% If sSeed = "" Then Response.Write "Din session er lukket. Du har enten venter for langtid eller også understøtter din browser ikke cookies." ElseIf sBrugernavn = "" Then Response.Write "Du har ikke skrevet nogen brugernavn" ElseIf LCase(sBrugernavn) <> LCase(sValidBrugernavn) Then Response.Write "Brugernavnet er ikke gyldigt" ElseIf sHash = "" And sPassword <> "" Then
If sPassword <> sValidPassword Then Response.Write "Adgangskoden er ikke rigtig." Else Session("auth_granted") = "true" Session("auth_Brugernavn") = sBrugernavn Session("auth_Gruppenavn") = sGruppenavn Session("auth_Initial") = sInitial Session("auth_Fornavn") = sFornavn Session("auth_Efternavn") = sEfternavn
Response.Redirect "Secured.asp"
End If ElseIf sHash <> "" Then If sHash <> sValidHash Then Response.Write "Adgangskoden er ikke rigtig." Else Session("auth_granted") = "true" Session("auth_Brugernavn") = sBrugernavn Session("auth_Gruppenavn") = sGruppenavn Session("auth_Initial") = sInitial Session("auth_Fornavn") = sFornavn Session("auth_Efternavn") = sEfternavn
Response.Redirect "Secured.asp"
End If Else Response.Write "Der er sket en fejl. Prøv venligst igen. Hvis dette fortsætter så kontakt venligst webmaster@havneparken1vejle.dk" End If
Brug af AI afslører de svagheder, virksomheder allerede har opbygget gennem års cloud-transformation, nye SaaS-løsninger og fragmenterede sikkerhedssystemer.
Dim sSeed Dim sValidBrugernavn Dim sValidPassword Dim sValidHash Dim sBrugernavn Dim sPassword Dim sHash Dim sGruppenavn Dim sInitial Dim sFornavn Dim sEfternavn Dim str
Set Conn = Server.CreateObject("ADODB.Connection") Set Rs = Server.CreateObject("ADODB.Recordset") Conn.Open "DBQ=" & Server.Mappath("Login.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
SQL = "SELECT Grupper.Gruppenavn, Bruger.Brugernavn, Bruger.Brugerkode, Bruger.Initial, Bruger.Fornavn, Bruger.Efternavn FROM Bruger INNER JOIN Grupper ON Bruger.Gruppenavn = Grupper.GruppeId WHERE Brugernavn='" & request("brugernavn") & "'" rs.Open SQL, Conn
if rs.EOF = true then str = "Brugernavnet findes ikke!" else sValidBrugernavn = rs("Brugernavn") sValidPassword = rs("Brugerkode") sGruppenavn = rs("Gruppenavn") sInitial = rs("Initial") sFornavn = rs("Fornavn") sEfternavn = rs("Efternavn")
If sSeed = "" Then str = "Din session er lukket. Du har enten venter for langtid eller også understøtter din browser ikke cookies." ElseIf sBrugernavn = "" Then str = "Du har ikke skrevet nogen brugernavn" ElseIf LCase(sBrugernavn) <> LCase(sValidBrugernavn) Then str = "Brugernavnet er ikke gyldigt" ElseIf sHash = "" And sPassword <> "" Then If sPassword <> sValidPassword Then str = "Adgangskoden er ikke rigtig." Else Session("auth_granted") = "true" Session("auth_Brugernavn") = sBrugernavn Session("auth_Gruppenavn") = sGruppenavn Session("auth_Initial") = sInitial Session("auth_Fornavn") = sFornavn Session("auth_Efternavn") = sEfternavn Response.Redirect "Secured.asp" end if ElseIf sHash <> "" Then If sHash <> sValidHash Then str = "Adgangskoden er ikke rigtig." Else Session("auth_granted") = "true" Session("auth_Brugernavn") = sBrugernavn Session("auth_Gruppenavn") = sGruppenavn Session("auth_Initial") = sInitial Session("auth_Fornavn") = sFornavn Session("auth_Efternavn") = sEfternavn
Response.Redirect "Secured.asp" end if else str = "Der er sket en fejl. Prøv venligst igen. Hvis dette fortsætter så kontakt venligst webmaster@havneparken1vejle.dk" End If End if
ElseIf LCase(sBrugernavn) <> LCase(sValidBrugernavn) Then str = "Brugernavnet er ikke gyldigt"
hvornår skulle dette ske?? Du finder de poster i din database hvor Brugernavn passer med det brugeren har indtastet. Er det så ikke lidt ligegyldigt??...jo.
Du burde også tjekke for om klienten har indtastet brugernavn eller password før du kører din sql. Fx kunne du i starten skrive:
if strUid = "" or strPwd = "" then 'En af dem er ikke indtastet str = "Brugernavn eller password er ikke indtastet!" else Set Conn = Server.CreateObject("ADODB.Connection") Set Rs = Server.CreateObject("ADODB.Recordset") Conn.Open "DBQ=" & Server.Mappath("Login.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
SQL = "SELECT Grupper.Gruppenavn, Bruger.Brugernavn, Bruger.Brugerkode, Bruger.Initial, Bruger.Fornavn, Bruger.Efternavn FROM Bruger INNER JOIN Grupper ON Bruger.Gruppenavn = Grupper.GruppeId WHERE Brugernavn='" & strUid & "' and Brugerkode = '"& strPwd &"'" rs.Open SQL, Conn
if rs.EOF = true then str = "Brugernavn eller adgangskode er ikke korrekt!" else If sSeed = "" Then str = "Din session er lukket. Du har enten venter for langtid eller også understøtter din browser ikke cookies." Else Session("auth_granted") = "true" Session("auth_Brugernavn") = strUid Session("auth_Gruppenavn") = rs("Gruppenavn") Session("auth_Initial") = rs("Initial") Session("auth_Fornavn") = rs("Fornavn") Session("auth_Efternavn") = rs("Efternavn") Response.Redirect "Secured.asp" End If End If
desuden bør du aldrig fortælle om det er brugernavnet eller password der er forkert! Altid kun "Brugernavn eller adgangskode er ikke korrekt".
Jeg kan egentlig ikke se hvorfor du tjekker for al det du gør. Som jeg ser kan du nøjes med det jeg har skrevet.
Grunden til at jeg bruger en trim og en replace på brugernavnet og password er af sikkerhedsmæssige årsager. Hvis man ikke gør det kan man logge ind hvis man skriver ' or '1'='1 i brugernavn og password.
Rune ... jeg kan se det rigtige i det du har skrevet men jeg kan ikke få det til at virke ... du kan også undre dig over at jeg bruger ting som LCase(sBrugernavn) <> LCase(sValidBrugernavn) og henter alle de informationer som jeg gør men det er nemlig af sikkerheds årsager!
Jeg kan stadig ikke få det til at virke!
Det sidste du skrev: (Citat) Hvis man ikke gør det kan man logge ind hvis man skriver ' or '1'='1 i brugernavn og password.
Hvad er det for noget ... det kan jeg ikke få til at passe ... jeg kan hverken komme igemmem med ' eller ''1'='1 :-D Hvis man bruger ' i brugernavnet så melder siden bare fejl!
LCase(sBrugernavn) <> LCase(sValidBrugernavn) det vil jo aldrig ske!!! Derfor er det bare spild af plads. Du finder alle dem i din database der har det brugernavn som klienten har indtastet. Derefter tjekker du for om de(n) poster som sql returnerer om det brugernavn er det samme som det der er indtastet. Kan du ikke se det?? Det vil aldrig ske. Den finder dem der er ens hvordan skulle det så ikke være ens længere nede??
Fandt en anden udvej ... du får lige nogle point for din hjælp!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.