Avatar billede mysli Nybegynder
28. marts 2005 - 02:06 Der er 22 kommentarer

Cookie value bliver til "deleted"

Jeg har lavet et login script, hvor jeg sætter en cookie;

setcookie("user", $data['name'], time() + 3600, "/");

$data['name'] er hentet fra en db, men det er nu ligemeget.

logud funktionen er som følgende;

function userLogoff(){
    setcookie("user", "", mktime(12,0,0,1, 1, 1970), "/");
}

Samme navn, med expire date langt tilbage.

Når den funktion så er kørt, og jeg kommer ind på forsiden, står der i brugermenuen; Brugernavn: deleted - hvor der normalt ville stå $_COOKIE['user'] som var brugernavnet fra databasen.


På alle andre sider kan jeg sagtens logge ud. Hvad gør jeg forkert?
Avatar billede gammelhat Nybegynder
28. marts 2005 - 02:14 #1
Det er altså rigtig skidt at lave login via cookies. Du bør sætte en session i stedet for. Se blot admin profilen på dit site..
Avatar billede mysli Nybegynder
28. marts 2005 - 02:20 #2
Det kan du have ret i:S

Prøver lige at ændre til sessions i stedet.
Avatar billede mysli Nybegynder
28. marts 2005 - 02:46 #3
Har bare lidt forståelses problemer med sessioner:S

Skal session_start(); skrive, på alle sider jeg ønsker at bruge sessionerne?
eller er det kun når sessionen sættes?

Lige nu kaldes login funktionen, og den starter sessioner, og sætter en session. Men det virker ikke, når jeg så kommer tilbage til forsiden.
Avatar billede mysli Nybegynder
28. marts 2005 - 02:58 #4
Tror jeg har den nu. Skal jo huske at sætte session ID.

Så når jeg logger ind nu, sættes session id'et i en cookie, og på forsiden testes så om den cookie er sat. Hvis den er påbegyndes sessioner, med det session nummer.

Er der nogen sikkerhedsproblemer med det?
Avatar billede gammelhat Nybegynder
28. marts 2005 - 03:24 #5
Session id skulle gerne blive sat af sig selv (PHPSESSID), det skal du ikke tænke på.

Hvordan har du lavet det? Jeg kan du du sætter SID som er det samme som PHPSESSID
Avatar billede mysli Nybegynder
28. marts 2005 - 03:26 #6
Dette køres i login funktionen, hvis den retunerer true

session_start();
$SID = session_id();
setcookie("SID", $SID, time() + 3600, "/");
$_SESSION['user'] = $data['name'];
Avatar billede mysli Nybegynder
28. marts 2005 - 03:27 #7
Dette køres så i toppen af index.php, så det kommer med på alle sider;

if(isset($_COOKIE['SID'])){
    session_id($_COOKIE['SID']);
    session_start();
}
Avatar billede mysli Nybegynder
28. marts 2005 - 03:29 #8
Okay, kan se jeg lige skal fjerne koder. Men hvordan er det den function er? noget med slashes.
Avatar billede gammelhat Nybegynder
28. marts 2005 - 03:32 #9
Det er unødvendigt arbejde. I toppen af index behøver du blot have

session_start();

slut færdig. Funktionen henter PHPSESSID ud af den session cookie, som php automatisk sætter
Avatar billede mysli Nybegynder
28. marts 2005 - 04:05 #10
Det er rettet nu.

Kan du ikke bare sige hvor fejlen er, er træt af dit fis;))
Avatar billede gammelhat Nybegynder
28. marts 2005 - 04:06 #11
Der er ingen fejl
Avatar billede mysli Nybegynder
28. marts 2005 - 04:07 #12
Joe, ellers ville du ikk kunne ændre de ting der:s
Avatar billede mysli Nybegynder
28. marts 2005 - 04:07 #13
Eller var fejlen af jeg havde gemt 'fortrolige informationer' i cookies?
Avatar billede gammelhat Nybegynder
28. marts 2005 - 04:10 #14
Du hentyder til den sidste?

Det gjorde jeg via javascript injection. Jeg ændrede mit navn til

<script>blabla</script>

ud fra blabla-koden hentede jeg det session id du var logget ind med. Det overtog jeg så..

Det kan du ungå ved f.eks. at benytte htmlentities() inden du udskriver brugerdata
Avatar billede gammelhat Nybegynder
28. marts 2005 - 04:11 #15
:)
Avatar billede mysli Nybegynder
28. marts 2005 - 04:15 #16
Altså, inden jeg udskriver hvilke bruger data?

Dem man ser i profilen?
Avatar billede gammelhat Nybegynder
28. marts 2005 - 04:17 #17
Ja. Du kan jo prøve at ændre et af dine profil-felter til

<script>alert('hello world')</script>

så vil alle brugere, der klikker sig ind på din profil, få smidt en alert i hovedet. script injection kan være en farlig ting
Avatar billede mysli Nybegynder
28. marts 2005 - 04:22 #18
Jeg har sat en strip_tags() på brugerinformationer nu, inden de bliver smidt på db'sen. Er det ikke nok?
Avatar billede gammelhat Nybegynder
28. marts 2005 - 04:25 #19
Det er også helt fint
Avatar billede mysli Nybegynder
28. marts 2005 - 04:26 #20
Okay, så nu ville du ikke kunne lave flere feje ting mere, eller hva?
Avatar billede gammelhat Nybegynder
28. marts 2005 - 04:37 #21
Ikke umiddelbart. Men nu har jeg heller ikke været ude i alle krogene :)

Nu er det jo også minimalt hvad du har af scripts på dit site endnu
Avatar billede mysli Nybegynder
28. marts 2005 - 13:53 #22
Det er rigtigt. Men vil prøve at huske, at fjerne alle tags fra bruger inputs nu:)

Lav lige et svar, så du kan få nogle point.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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