06. november 2006 - 17:40Der er
29 kommentarer og 1 løsning
Ændring af password i DB skal også ændre cookie
Jeg har en loginformular, som tjekker hvilket valg, der er foretaget:
Select Case Request("autologin") Case "autologin" Response.Cookies("LoginInfo").Expires = Now + 365 Response.Cookies("LoginInfo")("autologin") = "true" Response.Cookies("LoginInfo")("username") = Session("username") Response.Cookies("LoginInfo")("password") = RS("pass") Case "remember" Response.Cookies("LoginInfo").Expires = Now + 365 Response.Cookies("LoginInfo")("autologin") = "" Response.Cookies("LoginInfo")("username") = Session("username") Response.Cookies("LoginInfo")("password") = RS("pass") Case Else Response.Cookies("LoginInfo").Expires = Now Response.Cookies("LoginInfo")("autologin") = "" Response.Cookies("LoginInfo")("username") = "" Response.Cookies("LoginInfo")("password") = "" End Select
Når brugeren så logger ind og ændrer sit password, skal det også gerne ændres i den cookie, der bliver dannet, hvis brugeren har valgt enten automatisk login, eller "husk user/pass". Det troede jeg var gjort med dette:
If Request.Cookies("LoginInfo")("autologin") = "true" Then Response.Cookies("LoginInfo").Expires = Now + 365 Response.Cookies("LoginInfo")("autologin") = "true" Response.Cookies("LoginInfo")("username") = Session("username") Response.Cookies("LoginInfo")("password") = Request.Form("pass2") ElseIf Request.Cookies("LoginInfo")("autologin") = "" And Request.Cookies("LoginInfo")("username") <> "" Then Response.Cookies("LoginInfo").Expires = Now + 365 Response.Cookies("LoginInfo")("autologin") = "" Response.Cookies("LoginInfo")("username") = Session("username") Response.Cookies("LoginInfo")("password") = Request.Form("pass2") ElseIf Request.Cookies("LoginInfo")("autologin") = "" And Request.Cookies("LoginInfo")("username") = "" Then Response.Cookies("LoginInfo").Expires = Now Response.Cookies("LoginInfo")("autologin") = "" Response.Cookies("LoginInfo")("username") = "" Response.Cookies("LoginInfo")("password") = "" End If
Men det virker ikke med autologin. Man kommer ingen vegne, fordi scriptet ser, at det, der står i cookien ikke stemmer overens med det, der står i DB. Nogen gode bud på hvordan den skal kringles?
Det er jo forudsat, at der er andre, der har adgang til profilen. Du kan jo ikke tage mine cookies, hvis jeg logger på Windows med steen_hansen, og du logger på med thesurfer :o)
Siden er nu til en meget lukket kreds, så derfor har jeg nu ikke de store bekymringer med det. F.eks. her på E kan man også benytte cookie til login :o)
Jeg ved godt det er at lege med sikkerheden, og jeg gør det normalt heller ikke. Men til denne side vil jeg gerne have det på af bestemte årsager. Håber du har nogle gode bud :o)
Hvis man booter op på en Linux live cd, f.eks. Knoppix, får man adgang til "personlige filer" på en Windows XP installation.. Knoppix er lige glad med restriktionerne, som Windows XP lader sig af..
Jeg har personligt reddet dokumenter og billeder der var "sikret" af Windows XP, via en Knoppix live cd..
Ok, man kan også finde adminpassword (alle passwords) på en Windows 2000-maskine. Men denne side ER til et særligt udvalgt publikum. Større, helt oficielle sites lægger jeg det ikke ud på :o)
Jeg tror ikke jeg er helt med, for når brugeren ændrer sit password, lægges det ned i databasen. Request.Form("pass2") gemmes i databasen, men det skal også gemmes i cookien. Desuden skal der også tages højde for
case "true" ' autologin Response.Cookies("LoginInfo").Expires = Now + 365 Response.Cookies("LoginInfo")("username") = Session("username") Response.Cookies("LoginInfo")("password") = Request.Form("pass2")
case "" if Request.Cookies("LoginInfo")("username") <> "" Then ' remember: hvis autologin er tom, men der står et brugernavn = "remember" Response.Cookies("LoginInfo").Expires = Now + 365 Response.Cookies("LoginInfo")("password") = Request.Form("pass2") else ' intet: hvis autologin er tom, og der ikke står noget i brugernavn = "" Response.Cookies("LoginInfo").Expires = Now Response.Cookies("LoginInfo")("username") = "" Response.Cookies("LoginInfo")("password") = "" end if
end select
Jeg har fjernet de overflødige ting, som at sætte en værdi du lige har aflæst..
Hehe.. jeg ved godt at mit første indlæg (06/11-2006 18:02:14) var lidt dramatisk.. men overdrivelse fremmer forståelsen.. eller noget i den stil.. :-)
Mailserveren på E kører vist ikke så optimalt som den kunne :o)
Jeg får muligvis brug for dig igen snart. Er det i orden, hvis jeg lægger et link til det nye spørgsmål her? Det er tit, at der ikke bliver besvaret i lang tid efter oprettelsen af spørgsmålet.
Apropos, er ASP lidt på retur? Jeg synes der er en overvægt af PHP-spørgsmål :o/
SQLEncode, HTMLEncode ... har du et link til noget, der forklarer anvendelsen? Jeg kender til noget af det, men ikke det hele, og det ville jo være en fordel :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.