Avatar billede steen_hansen Forsker
06. november 2006 - 17:40 Der 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?
Avatar billede thesurfer Nybegynder
06. november 2006 - 18:02 #1
Du skriver vel ikke passwordet i en cookie??? (det kan jeg se at du gør!)

Det skal du sq ikke gøre! :-)

Cookies kan læses og kopieres af andre.. så der skal du ikke gemme følsomme oplysninger..
Avatar billede steen_hansen Forsker
06. november 2006 - 18:08 #2
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)
Avatar billede steen_hansen Forsker
06. november 2006 - 18:10 #3
... selvom E ikke kan siges at være beregnet til en lille, lukket kreds :o)
Avatar billede steen_hansen Forsker
06. november 2006 - 18:16 #4
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)
Avatar billede thesurfer Nybegynder
06. november 2006 - 18:18 #5
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..


Jeg kigger lige på din kode.. :-)
Avatar billede thesurfer Nybegynder
06. november 2006 - 18:22 #6
Du kunne evt genbruge din select-statmen, hvor du bruger Request.Cookies("LoginInfo")("autologin") i stedet for Request("autologin")..

PS: brug altid den korrekte request-metode..

F.eks.:
Request.Querystring - data sendes via url
Request.Form - data sendes via form
osv..
Avatar billede steen_hansen Forsker
06. november 2006 - 18:23 #7
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)

Takker, håber du kan finde noget :o)
Avatar billede steen_hansen Forsker
06. november 2006 - 18:27 #8
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 "autologin" og Case "remember"
Avatar billede thesurfer Nybegynder
06. november 2006 - 18:29 #9
Den eneste forskel på autologin og remember, er om "autologin" skal have værdien "autologin", korrekt?
Avatar billede thesurfer Nybegynder
06. november 2006 - 18:31 #10
Rettelse: om "autologin" skal have værdien "true"..

Husk på at der er forskel på "true" og true..
Avatar billede thesurfer Nybegynder
06. november 2006 - 18:34 #11
Eksempel:

select Request.Cookies("LoginInfo")("autologin")

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..
Avatar billede thesurfer Nybegynder
06. november 2006 - 18:36 #12
autologin: autologin = "true" + username <> ""
remember : autologin = "" + username <> ""
intet: autologin = "" + username = ""

Eller har jeg misforstået det?
Avatar billede thesurfer Nybegynder
06. november 2006 - 18:37 #13
Så burde denne linie faktisk også være overflødig (i "autologin"-delen i min select-statement):

    Response.Cookies("LoginInfo")("username") = Session("username")
Avatar billede steen_hansen Forsker
06. november 2006 - 18:37 #14
Ah, det ser rigtigt ud. Prøver det lige af ...
Avatar billede steen_hansen Forsker
06. november 2006 - 18:45 #15
Jeg har lige testet alle mulige og umulige kombinationer, og det ser ud til at virke perfekt. Smider du et svar? :o)
Avatar billede thesurfer Nybegynder
06. november 2006 - 18:50 #16
Det kan du li'e tro :-)
Avatar billede thesurfer Nybegynder
06. november 2006 - 18:51 #17
Ekspertens mail server lagger "lidt".. Jeg har lige modtaget en mail ang indlæg 06/11-2006 18:37:57 i dette spm.. :-)
Avatar billede steen_hansen Forsker
06. november 2006 - 18:51 #18
Takker mange gange :o)

Jeg ved godt det ikke er smart, men det er en betroet samling brugere, der skal benytte det :o)
Avatar billede steen_hansen Forsker
06. november 2006 - 18:51 #19
Og pointene får du lige :D
Avatar billede thesurfer Nybegynder
06. november 2006 - 18:52 #20
Takker for points :-)
Avatar billede thesurfer Nybegynder
06. november 2006 - 18:52 #21
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.. :-)
Avatar billede steen_hansen Forsker
06. november 2006 - 18:54 #22
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/
Avatar billede steen_hansen Forsker
06. november 2006 - 18:55 #23
Nej, du har ret, det er ikke smart at gemme cookies, eller at sætte MSIE op til at huske logindata :o)
Avatar billede thesurfer Nybegynder
06. november 2006 - 19:01 #24
Hehe..

Folk bliver typisk overtalt til at gå fra ASP og til ASP.Net, som ikke rigtigt har noget med ASP at gøre, men er typisk C#..

Og ASP bliver typisk ikke længere kaldt "ASP", men "ASP Classic", da det nye "ASP" er "ASP.Net"..

Yep.. sucks.. men sådan er det bare..

PHP vil altid være PHP.. men med fler ting.. typisk object orienteret..


Om du vil smide et link til det nye spørgsmål, i dette spørgsmål, er vel op til dig selv.. :-)

Jeg vil mene at det er tilladt, da du jo *ikke* opretter et reference-spørgsmål, hvilket ikke er tilladt jvf Ekspertens regler..

Spørgsmål er så, om det betragtes som spam.. :-)

Aner det ikke.. det er op til dig.. :-)
Avatar billede thesurfer Nybegynder
06. november 2006 - 19:02 #25
Yes.. så kom der lige 7 mails på een gang, ang dette spm.. :-)
..frem til 06/11-2006 18:55:02..
Avatar billede steen_hansen Forsker
06. november 2006 - 20:34 #26
he he, det er noget, der rykker :o)

Jeg gør dig bare opmærksom på, at der er oprettet et nyt spørgsmål på E. Det kunne jo være, at nyhedens interesse var stor :o)

Jeg skal dog lige arbejde lidt med det selv :o)
Avatar billede steen_hansen Forsker
06. november 2006 - 20:37 #27
Lige et lille spørgsmål:

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/
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:42 #28
Det andrer sådan set bare f.eks. "/" til "%2f"..
Dvs, det bliver til koder der kan sendes over url osv..

Jeg har ikke mere en hvad en søgning på google vil give dig.. :-)
Avatar billede steen_hansen Forsker
06. november 2006 - 20:52 #29
Ok. Du skal have 1000 tak for hjælpen. Vi snakkes! :o)
Avatar billede thesurfer Nybegynder
06. november 2006 - 20:55 #30
Yep.. snakkes.. :-)
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