Avatar billede dusktrab Nybegynder
20. juni 2002 - 01:08 Der 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 %>
Avatar billede Lasse Novice
20. juni 2002 - 01:16 #1
nej det vil jeg ikke mene...
Avatar billede Lasse Novice
20. juni 2002 - 01:21 #2
Ups, det kan du godt

Proev dette:


username = ' or username like '%%

men det kraever jo at du kender til feltet username
Avatar billede invisibleman Nybegynder
20. juni 2002 - 01:23 #3
gooky: Nej ... for hvis du skriver en ' i feltet og submitter vil den sige at der er en SQL fejl omkring: "username='" ... :D
Avatar billede jnissen Nybegynder
20. juni 2002 - 01:23 #4
Læs mere om det på: http://activedeveloper.dk/aspdigital/2001092601.asp
Der kan du også løse dit problem.
Avatar billede Lasse Novice
20. juni 2002 - 01:25 #5
det var saa et svar

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.
Avatar billede Lasse Novice
20. juni 2002 - 01:28 #6
hvorfor vil den det invisibleman.... hele saetningen vil se saaledes ud efter indsaetning af det:

SELECT * FROM users where username = '' or username like '%%'
Avatar billede Lasse Novice
20. juni 2002 - 01:35 #7
har lige fyret den af (godt nok i mssql) og der virker det finno finno
Avatar billede tmceu Praktikant
20. juni 2002 - 01:49 #8
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".
Avatar billede luzk Nybegynder
20. juni 2002 - 09:29 #9
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...
Avatar billede kimiwan Nybegynder
20. juni 2002 - 12:30 #10
luzk:

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,"'","''").

Du kan også læse her og lære om at sikre dine scripts lidt bedre mod hacking:
http://www.4guysfromrolla.com/webtech/061902-1.shtml
Avatar billede dusktrab Nybegynder
27. juni 2002 - 02:05 #11
Hvordan laver jeg så sådan en:

if ' i form så erstat med "

eller noget? Ville det ikke forhindre folk I at indsætte de SQL strenge?
Avatar billede luzk Nybegynder
27. juni 2002 - 08:02 #12
dusktrab:

det gør du med Replace
fx:
formValue = Request.Form("textField")
newValue = Replace(formValue, "'", "''")

syntaksen er: Replace(tekstenDerSkalErstattesI, karakter(er)DerSkalErstattes, karakter(er)DerSkalErstattesMed)

hmmm - håber det er forståeligt :o)
Avatar billede luzk Nybegynder
27. juni 2002 - 08:05 #13
kimiwan:

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)
Avatar billede dusktrab Nybegynder
16. januar 2003 - 12:44 #14
Tak for hjælpen
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester