20. juni 2002 - 01:08Der er
11 kommentarer og 3 løsninger
Login script, kan det hackes?
Jeg bruger dette login script: Jeg har hørt at det kan hackes ved at indsætte en simpel SQL sætning i formen i feltet "username" kan man det? og hvordan kan man forhindre dette?
<% if request("action") = "login" then if request.form("username") = "" then error = "You must enter a username" else if request.form("password") = "" then error = "You must enter a password" else set login = con.execute("SELECT * FROM users where username = '" & request.form("username") & "'") If login.BOF or login.EOF then error = "No such user" else if login("password") = request.form("password") then bla bla bla (skjult af sikkerhedsmæssige grunde) else error = "Incorrect password" end if end if end if end if end if %>
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
Du kan forhindre det ved at lave din select-saetning med parametre. Eller ogsaa kan du soege paa om der i det usernavn brugeren giver er ordet username... Det er bare ikke helt nok, da du kan lave nogle andre alternativer til det jeg skrev, og du vil stadig kunne cracke det.
Du bør først og fremmest kontrollere om der findes en post med bruger OG password.
"SELECT * FROM users where username = '" & request.form("username") & "' AND Password ='" & request.form("password") & "'"
Hvis du kun kontrollerer på brugernavn og endda er så flink at fortælle at brugeren ikke findes, er du ret flink mod uvedkommende.
Lav i stedet ovenstående check på brugernavn/password og hvis du ikke finder et match, fortæller du noget i stil med "Brugernavn og/eller password findes ikke".
Noget man kan gøre for at sikre sig, er ikke at benytte en WHERE clause, men derimod hente alle oplysninger, og derefter gennemløbe sit RS - ved det er en krævende løsning, men den er mere sikker i og med man ikke kan bruge en SQL streng i inputfeltet...
ikke nødvendigt, hvis du bare skrer dig ordenligt - f.eks. skal du *altid* (ikke kun ved login-sider) sørge for at replace ' med '' - replace(streng,"'","''").
Ja det har du selvfølgelig ret i, men jeg mener engang at have læst at det alligevel kunne hackes, og at den bedste løsning var et loop - not sure though - der findes jo også en masse crap på nettet der ikke er helt sandt :o) Men det er såmænd derfor jeg stadig holder mig til den løsning - dog erstatter jeg også plingerne :o)
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.