Cookies PHP

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Iets geks waar ik al een paar uur mee aan het stoeien ben...
Een erg simpel voorbeeld om mijn probleem duidelijk te maken :
Het gaat om een login tot een stukje op een webapplicatie.
ik registreer mijn cookies met de volgende code :
code:
1
2
3
4
<?php
            setcookie("username", "$USERID", time() + 1200, "/", false, 0);
            setcookie("password", "$PASSWORD", time() + 1200, "/", false, 0);
?>


Vervolgens redirecten naar een andere pagina waar ik voor debug de volgende regel hebt :

code:
1
2
3
<?php
print_r($_COOKIE);
?>


Nu krijg ik in firefox mooi mijn twee vars terug te zien maar in internet explorer niet.
Registeer ik mijn cookies soms verkeerd?

IE blokt geen cookies volgens de settings….
Help!!

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 22-08 15:23
Zoek eens naar "P3P cookie IE"

Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 22-08 14:21
Gebruik je Multiviews dan moet je even je Cookie path " / " maken.
Of dit normaal in ff niet hoeft weet ik niet.

Edit:
Ik moet beter kijken.

Waarom werk je niet met Vars buiten quotes al heeft dat niks met deze situatie te maken?

En als je gewoon met $_COOKIE['username'] doet printen?

[ Voor 45% gewijzigd door Depress op 15-08-2006 19:01 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 24-08 10:58

Janoz

Moderator Devschuur®

!litemod

Je hebt daarnaast ook niet het domein opgenomen in je setCookie.

Daarnaast wil ik je graag even melden dat het opslaan van gebruikersnaam en wachtwoord in een cookie behoorlijk not done is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Depress schreef op dinsdag 15 augustus 2006 @ 18:57:
Gebruik je Multiviews dan moet je even je Cookie path " / " maken.
Of dit normaal in ff niet hoeft weet ik niet.

Edit:
Ik moet beter kijken.

Waarom werk je niet met Vars buiten quotes al heeft dat niks met deze situatie te maken?

En als je gewoon met $_COOKIE['username'] doet printen?
Dan werkt het if FF wel en IE blijft helaas achter... ik ben nu even wat P3P stuff aan het lezen maar daar heb ik ook nog geen succes mee.

Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 22-08 14:21
En als je niet php laat door verwijzen maar gewoon een klik link?

Edit ik zie het, de llatste 0, is optional, maar de waarde moet een bool(ean) zijn. Geen integer.

PHP:
1
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure [, bool httponly]]]]]] )

[ Voor 73% gewijzigd door Depress op 15-08-2006 21:56 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 24-08 10:58

Janoz

Moderator Devschuur®

!litemod

Er klopen wel meer parameters niet. Zoals ik eerder al zei mist het domein. Waarom de TS het in P#P gaat zoeken is mij ook niet helemaal duidelijk ;)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 22-08 14:21
@Janoz, hij heeft het domein wel aangegeven. De ' / ' is het domein.

Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 20:35
Dat is het path Depress.. Hij geeft false mee als domein, dan vind ik het niet gek dat het niet werk. Zie de documentatie van setcookie.

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

  • DexterDee
  • Registratie: November 2004
  • Laatst online: 23-08 21:16

DexterDee

I doubt, therefore I might be

Janoz schreef op dinsdag 15 augustus 2006 @ 19:00:
Je hebt daarnaast ook niet het domein opgenomen in je setCookie.

Daarnaast wil ik je graag even melden dat het opslaan van gebruikersnaam en wachtwoord in een cookie behoorlijk not done is.
Een hash met (server-side) salt is nog wel te overzien. Maar het is ook helemaal niet nodig om 2 cookies te gaan zetten. Dat kan makkelijk in 1 cookie met een delimiter ;)

Verder sluit ik me aan bij de mening dat het domein niet goed genoeg is gespecificeerd. Deze kun je vrij eenvoudig uit de $_SERVER array halen :)

Klik hier om mij een DM te sturen • 3245 WP op ZW


Acties:
  • 0 Henk 'm!

  • Anders
  • Registratie: December 2000
  • Laatst online: 29-07 17:39
Verwijderd schreef op dinsdag 15 augustus 2006 @ 18:50:
Nu krijg ik in firefox mooi mijn twee vars terug te zien maar in internet explorer niet.
Je hebt niet toevallig een underscore staan in een subdomeinnaam, bv http://test_server.domein.nl ?

Internet Explorer kan daar niet mee overweg (terecht overigens, want underscores mogen daar niet gebruikt worden), waardoor cookies niet worden geregistreerd.

Ik spoor veilig of ik spoor niet.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 24-08 10:58

Janoz

Moderator Devschuur®

!litemod

DexterDee schreef op woensdag 16 augustus 2006 @ 02:24:
[...]

Een hash met (server-side) salt is nog wel te overzien. Maar het is ook helemaal niet nodig om 2 cookies te gaan zetten. Dat kan makkelijk in 1 cookie met een delimiter ;)

Verder sluit ik me aan bij de mening dat het domein niet goed genoeg is gespecificeerd. Deze kun je vrij eenvoudig uit de $_SERVER array halen :)
Wat ik meer bedoel is dat je helemaal geen bestaande waarde hiervoor moet gebruiken. Een cookie is onveilig. Zodra er een lek in de site zit (of browser) kunnen cookies erg makkelijk door derden worden achterhaald. Nu snapt iedereen wel dat je niet je gebruikersnaam met password op straat wilt hebben liggen, echter een berekende hash is net zo vervelend. Omdat deze op vaste waarden is gebaseerd kan iedereen dezelfde hash in zijn eigen cookie zetten en gebruiken om in te loggen. Het wachtwoord is helemaal niet meer nodig. Dit wordt pas verholpen als de salt aangepast wordt (en iedereen dus opnieuw in moet loggen) of door je wachtwoord zelf te wijzigen.

Beter is om gewoon een random waarde te gebruiken en deze op te slaan bij de gebruiker. Zodra deze dan uitlogt vergeet je deze waarde. Bij het weer inloggen genereer je gewoon een nieuwe. Dat is inderdaad net als sessies werken. Mocht je nu je cookie op straat hebben liggen of uberhaupt het idee hebben dat iemand anders met je acount ingelogd is, dan kun je gewoon alles uitloggen en opnieuw inloggen en het probleem is verholpen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • DexterDee
  • Registratie: November 2004
  • Laatst online: 23-08 21:16

DexterDee

I doubt, therefore I might be

Janoz schreef op woensdag 16 augustus 2006 @ 09:29:
[...]

Wat ik meer bedoel is dat je helemaal geen bestaande waarde hiervoor moet gebruiken. Een cookie is onveilig. Zodra er een lek in de site zit (of browser) kunnen cookies erg makkelijk door derden worden achterhaald.
Een bestaande waarde (hash van een wachtwoord) met een server side salt (rehash met die salt) die bij elke sessie opnieuw wordt berekend is mijns inziens vrijwel even secure als een volledige random waarde. Een collision op de hash betekent niet dat je per definitie de password hash te pakken hebt, terwijl je wel het password kan checken.

Bovendien werkt PHP standaard met sessions in cookies en zul je uberhaubt wat meer moeten doen om session hijacking te voorkomen. Een recent phpsessid cookie is namelijk in veel gevallen al genoeg om een sessie te kapen op een simpele PHP website.

Ik hou trouwens ook van geinige obfuscation om het hackers net iets moeilijker te maken. Zo ziet een str_rot13 van een MD5 hash er nog steeds valide uit, maar als je dat niet weet kan dat wel een extra barriere opwerpen :)

Klik hier om mij een DM te sturen • 3245 WP op ZW


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 24-08 10:58

Janoz

Moderator Devschuur®

!litemod

Als je telkens dezelfde salt hebt, dan geeft het stelen van het cookie je dezelfde rechten als de credentials. Als ik de inhoud van je cookie in mijn eigen cookie zet ben ik immers gewoon ingelogd onder jouw account.

Laat je de salt varieren dan zul je deze bij de gebruiker op moeten slaan. Op dat moment heeft het hashen met het wachtwoord geen enkele functie meer aangezien je ook gewoon rechtstreeks die random waarde over kunt sturen. Hashen met het wachtwoord heeft dezelfde impact als het userID er bijop tellen of de waarde te verdubbelen oid.


Een gekaapte php sessie is simpel op te lossen door die ene session te invalideren en een nieuwe te starten (met andere ID). Dat lukt je niet als het ID statisch is.

[ Voor 13% gewijzigd door Janoz op 16-08-2006 13:00 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1