[php]sessies zonder cookies

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Aangezien de search oudere posts weergaf, heb ik besloten een nieuw topic te openen.

De 'normale' flow van zaken is dat een sessie gemaakt word door php. Dit sessie-ID word in een cookie gestopt die de client bij iedere http-request mee naar de server stuurt. Mijn vraagstuk geld voor het feit dat er vast browsers zijn zonder cookie-verwerking (al dan niet uitgeschakeld door de gebruiker). Het is dan gebruikelijk om via een POST of GET het sessie-ID mee te sturen. Maar moet ik nu echt elk hyperlink
PHP:
1
if (!isset($_COOKIE)) echo $sessie_id /*ofzo*/

deze extra handeling mee laten nemen? Dat zou echt een bummer zijn. Ik neem zelf aan dat ik wat over het hoofd zie.

Acties:
  • 0 Henk 'm!

  • Nielsvr
  • Registratie: Maart 2004
  • Laatst online: 27-08 14:55
Je kan het ook instellen in php.ini, nadeeltje is dat hij dat ook doet als je wel cookies accepteert... Wellicht sessies koppelen aan een database dmv ipadres?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja, ik had begrepen dat php.ini veel instellingen heeft omtrent sessies en cookies.
Ik heb de eindelijk de enige site gevonden die mijn antwoord heeft denk ik.
php.net :X :>
PHP is capable of transforming links transparently. Unless you are using PHP 4.2.0 or later, you need to enable it manually when building PHP. Under Unix, pass --enable-trans-sid to configure. If this build option and the run-time option session.use_trans_sid are enabled, relative URIs will be changed to contain the session id automatically.
Nu nog even bedenken wat we hier mee aan moeten :) Bedankt iig.

[edit]
Dit betekent dus (denk ik) dat PHP4.2+ gebuild is met --enable-trans-sid aan, goed nieuws (voor mij dan)! Ik was al bang dat ik Unix zou moeten gaan gebruiken :P

[ Voor 11% gewijzigd door Verwijderd op 07-05-2008 14:14 ]


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Hoeveel browsers werken er op dit moment niet meer met cookies? Mij lijkt de moeite die je erin stopt veel te groot voor het resultaat. Ik zou er dus niet aan beginnen ;)

Als je een sessie-systeem bouwt op basis van sessies (en geen cookies), kan je sowieso de gehele sessie ermee blijven werken. Loop je alleen tegen het probleem aan dat je met het verlopen van een sessie een cookie nodig hebt :)

Ik zou er dus niet aan beginnen. Je helpt er alleen de mensen mee die een browser hebben die geen cookies ondersteunt én die het cookie echt nodig hebben omdat de sessie verlopen is.
Teveel moeite voor een te kleine doelgroep dus :)

Acties:
  • 0 Henk 'm!

  • Muthas
  • Registratie: December 2005
  • Niet online

Muthas

O+

Misschien is zijn doelgroep wel het mobiele platform, en er zijn best veel telefoons en/of PDA's die geen cookies accepteren..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Inderdaad, ik wil mijn webspelletjes ook onderweg kunnen spelen :P
mithras schreef op woensdag 07 mei 2008 @ 14:17:
Als je een sessie-systeem bouwt op basis van sessies (en geen cookies), kan je sowieso de gehele sessie ermee blijven werken.
Daar bedoel je of via een POST of GET variabele je sessie_id terugsturen, of (imho) jouw kijk op het systeem geeft de server geen idee wie welke sessie_id heeft. Anders verstuurt PHP's sessie-systeem vanzelf een cookie.

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Mm, daar hebben jullie inderdaad een goed punt. Mijn oplossing is dan geen goede.

Wat je zou kunnen doen is met output buffering werken. Je kan dan in je bufferstring op zoek gaan naar alle interne verwijzingen in de html en die aanpassen met een toevoeging van een GET parameter.

Je moet dan alleen bij je server checken of je client cookies accepteert en dan tot deze oplossing overgaan, want het gaat je nogal wat overhead kosten...

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

mithras schreef op woensdag 07 mei 2008 @ 15:01:
Mm, daar hebben jullie inderdaad een goed punt. Mijn oplossing is dan geen goede.

Wat je zou kunnen doen is met output buffering werken. Je kan dan in je bufferstring op zoek gaan naar alle interne verwijzingen in de html en die aanpassen met een toevoeging van een GET parameter.

Je moet dan alleen bij je server checken of je client cookies accepteert en dan tot deze oplossing overgaan, want het gaat je nogal wat overhead kosten...
En dat is precies wat 'session.use_trans_sid' doet wat hierboven beschreven is. Waarom zou je dat zelf gaan fabriceren?

Als je al op deze manier werkt ben je wel bijna verplicht een goede verdere beveiliging in te bouwen. Het heet niet voor niets transparent ID's. Iedereen kan ze zien en elke URL die je doorstuurt met die sessie-ID bevat ook daadwerkelijk een link naar die sessie. Ook kan je sessie eenvoudig in allerlei systemen terecht komen die iets doen met de referrer bijvoorbeeld.

Flink beveiligingsrisico dus, trans_id. Daarom wordt meestal aangeraden cookies te gebruiken (moet je nog steeds beveiligen uiteraard, maar je geeft tenminste niet continu je sessie-ID bloot).

[ Voor 11% gewijzigd door Bosmonster op 07-05-2008 16:05 ]

Pagina: 1