25. september 2004 - 16:28Der er
8 kommentarer og 1 løsning
Sikker login?
Hej.
Jeg har denne kode, der gerne skulle forhindre uønskede i at besøge nogle udvalgte sider, ved at indsætte følgende i toppen af disse sider:
<% Session.Timeout = 60 %> <% If Session("login") = "" Then Response.Redirect("login.asp") End If %>
Nu er jeg imidlertid blevet en smule usikker på om den hellige grav nu også er velforvaret (om loginkoden er relativ sikker) :-)
Kan jeg stole på dette login-system, eller mangler der noget for at det bliver mere sikkert?
<% Response.Buffer = True %> <% ' S t a r t / C h e c k f o r m u l a r ' -------------------------------------------------------------------------------------------------------------------------------------- If Request("check") = "true" Then
If strBrugernavn = "test" AND strKode = "test" Then Session("login") = "sessionkode" Response.Redirect "start.asp" Else Session("login") = "" Fejl = "Indtast korrekt brugernavn og password" End If
End If
' A f s l u t / L o g o u t ' -------------------------------------------------------------------------------------------------------------------------------------- If Request.QueryString("section") = "slut" AND Request.QueryString("page") = "1" Then
Session.Abandon Response.Redirect "default.asp"
End If %>
P.S. Jeg bruger ingen database til login-systemet, men har brugernavn og password liggende i koden (hvilket efter sigende skulle være sikkert).
Der var en mindre fejl i den første kode, men den er rettet nu:
<% Response.Buffer = True %> <% ' S t a r t / C h e c k f o r m u l a r ' -------------------------------------------------------------------------------------------------------------------------------------- If Request("check") = "true" Then
If strBrugernavn = "test" AND strPassword = "test" Then Session("login") = "sessionkode" Response.Redirect "start.asp" Else Session("login") = "" Fejl = "Indtast korrekt brugernavn og password" End If
End If
' A f s l u t / L o g o u t ' -------------------------------------------------------------------------------------------------------------------------------------- If Request.QueryString("section") = "slut" AND Request.QueryString("page") = "1" Then
<% Session.Timeout = 60 %> <% If Session("login") = "" Then Response.Redirect("login.asp") End If %>
til dettte så den tjekke på om værdi i session variablen er forskllig fra det du har sat den til:
<% Session.Timeout = 60 %> <% If Session("login") <> "sessionkode" Then Response.Redirect("login.asp") End If %>
Når du ikke har en database er der ikke nogen grund til at skifte ' ud med to '' som sker i disse linjer: strBrugernavn = Trim(Replace(request("brugernavn"),"'","''" )) strPassword = Trim(Replace(request("password"),"'","''" )) Der sker ikke noget ved at havde dem og hvis du engang får en database koblet på login systemet er det meget vigtig altid at huske at enten fjerne ' helt eller replace en ' med to '' :)
<% If Session("login") = "" Then Response.Redirect("login.asp") End If %>
Med:
<% If Session("login") <> "sessionkode" Then Response.Redirect("login.asp") End If %>
... Jeg har bare anvendt den gamle kode til eksemplet her ;-)
Men det vil altså sige, at jeg kan regne med at koden er (relativ) sikker; at det ikke bare er til at bypasse uden videre?
Hvad med søgemaskiner, søgerobotter, o.s.v. Hvordan reagerer de på den slags loginsystemer? Mit nuværende loginsystem (og siderne) er renset for ord som: login, admin, password, o.s.v. Men er det unødvendigt med dette login-system?
Så jeg skal stadig holde mig fra at bruge ord i titelbar og andre steder på en side, som: admin, password, o.s.v.? Gælder det også i det beskyttede indhold/på de beskyttede sider?
Okay. Hvad ændrer det at man smider <% End If %> ned under f.eks. </html>? Er siderne ikke godt nok beskyttet med en sessionkode?
Det ændre det på det hvis du ikke havde en redirect ville den vise siden, hvis du flytter det ind i else delen vil den vise en blank side. Men redirecten gør at man ikke kan se siden.
Jeg vel helt hvordan de robotter virker, men de åbner vel siden som vi åbner en siden i en browser. Når man åbner siden vil serveren udgføre koden og sende html outputet til den som åbner siden, og deri vil man ikke kunne se passwordet. Det kræver source koden for at kunne se koden. Ligeledes vil den ikke kunne findes indholdet af den beskyttede side da robotten ikke er logget ind.
Så kan jeg være rimelig sikker (stadig relativt, I know ;-) ) på min login-funktion.
Lidt points til dig, sammen med en tak for din hjælp!
// Lukker
Apo
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.