14. marts 2006 - 23:07Der er
21 kommentarer og 1 løsning
Login check fejl (ASP/Js) Hjælp
Jeg får en HTTP fejl siden kan ikke vises når jeg kører mit login igennem dette script... det er hovedsageligt sket efter jeg prøvede at bruge Replace for at lukke sikkerhedshullet...
Nogen der kan spore fejlen?
---------------------------------------------
<% @language=javascript %> <%
navn = Replace(Request.Form("brugernavn"), "'", "''") pass = Replace(Request.Form("password"), "'", "''")
Nu kører du JScript, og jeg er kun vandt til VBScript, hos mig ville jeg skulle sætte "Set" ind følgende steder set conn = Server.CreateObject("ADODB.Connection"); set rs = conn.Execute("SELECT BRUGERNAVN, PASSWORD, NAVN FROM BRUGER WHERE BRUGERNAVN='"&navn&"' AND PASSWORD='"&pass&"'" );
Når du så er kommet videre med den fejlrettelse (den med replace), får du nok fejl i denne linie:
rs = conn.Execute("SELECT BRUGERNAVN, PASSWORD, NAVN FROM BRUGER WHERE BRUGERNAVN='"&navn&"' AND PASSWORD='"&pass&"'" );
Her skal du nok overveje at bruge + i stedet for & til at flette brugernavn og adgangskode ind i sql-sætningen:
rs = conn.Execute("SELECT BRUGERNAVN, PASSWORD, NAVN FROM BRUGER WHERE BRUGERNAVN='" + navn + "' AND PASSWORD='" + pass + "'" );
Det er i øvrigt god skik at erklære alle variable med var foran, samt at afslutte sine sætninger med semikolon (;) - også selvom det måske ikke er strengt nødvendigt...
Ja det er replace som driller det skal så være med små bogstaver:
navn = Request.Form("brugernavn").replace("'", "''");
og hvis ikke den vil lave replace på request.form så prøv: navn = Request.Form("brugernavn"); navn = navn.replace("'", "''");
Synes godt om
Slettet bruger
15. marts 2006 - 14:10#9
Har prøvet det sidste... begge løsninger giver en js fejl...
Microsoft JScript runtime error '800a01b6'
Object doesn't support this property or method
/login_check.asp, line 5
---------------------------------
Måske jeg burde få det her spørgsmål over i javascript katagorien istedet? :-D
Synes godt om
Slettet bruger
15. marts 2006 - 14:12#10
busschou > Kigger vi på det øverste eksempel på siden så er linie 4 ved: navn = Replace(Request.Form("brugernavn"), "'", "''")
Synes godt om
Slettet bruger
15. marts 2006 - 14:14#11
Måske man kunne benytte nået andet end replace? Grunden til jeg fik det ind i min kode i første omgang var fordi der var tegn ved login siden ' '1-&& ...nået som kunne snyde databasen og give brugeren lov til at logge ind. Det sikkerhedshul vil jeg gerne have lukket.
...du har i øvrigt en syntaksfejl i ordet "pointsne" - point er både ental og flertal og skal derfor ikke ændres... ;D
Synes godt om
Slettet bruger
15. marts 2006 - 17:00#21
Softspot > Hahaha det har du sku vist ret i.. nå men endnu engang tak ihvertfald, dejligt det virker..! :-D
Synes godt om
Slettet bruger
15. marts 2006 - 17:01#22
Og der var points. ;-)
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.