i-frame sessie probleem!
Ik ben een site aan het maken die in een i-frame op een andere website komt te staan.
Nu wil ik gebruik gaan maken van sessies. Echter, ik zie net per toeval dat bij iedere pagina aanroep die ik doe (bijvoorbeeld door op een link te klikken) er een nieuwe sessie wordt gestart. Zodoende stonden er net ineens ruim 100 sessie-bestanden op de server, allemaal met de datum van vandaag. Na testen blijkt dus dat er telkens een nieuwe sessie wordt aangemaakt bij een aanroep die binnen het i-frame plaatsvindt.
Als ik mijn site buiten het i-frame aanroep dan maakt ie gewoon 1 sessie aan, dus dat gaat wel gewoon goed. Alleen als de site in het i-frame hangt gaat het gruwelijk mis. Wie weet een oplossing? Ik heb echt sessies nodig (cookies is geen optie).
Geen iframe?
Toevoeging op 13/12/2010 13:09:04:
Oke, ik ben inmiddels een stukje verder. Ik heb dit toegevoegd in mijn code:
ini_set('session.use_cookies', 0);
ini_set('session.use_trans_sid', 1);
Als ik nu in de code een url relatief maak dan gooit ie er in de URL automatisch een sessie id achteraan.
In de code zet ik bijvoorbeeld <a href="/bla">link</a>. Deze link wordt dan omgezet in www.mijnsite.nl/bla?PHPSESSID=2c406271961v4a09dae2aacb4e5219b
Is dit een goede manier? Of zijn hier (veiligheids)risico's aan verbonden?
In een iframe open je toch een "nieuwe pagina" en kan je toch gewoon beginnen met start_session() lijkt mij?? Hoe je dat op of in combinatie met een andere website doet is mogelijk wel een issue?
Staat die iframe op de zelfde site? op het zelfde domein?
We hebben een website A (mijn website) en een website B (op een ander domein). Website A staat in een i-frame op website B. Website B is op dit moment nog een lokale kopie die op mijn computer staat. In deze lokale kopie staat een i-frame waarin website A wordt aangeroepen.
@John D: ja, ik begin oko met start_session, maar zodra ik op een link klik wordt er een nieuwe sessie gestart, er wordt een nieuw sessie bestand aangemaakt.
Toevoeging op 13/12/2010 13:23:05:
Is mijn oplossing om de sessie id in de url mee te sturen (zoals in het voorbeeld hierboven) oke?
Jouw localhost kan niet zowaar gaan prutsen aan de sessie variabelen op andere servers.
Toevoeging op 13/12/2010 15:11:29:
Als ik eerst mijn eigen site los aanroep (dus niet in het i-frame) en daarna in dezelfde browser nogmaals aanroep maar dan wel in het i-frame dan heeft ie wel één sessie-id. Kan ik daar uit concluderen dat ie simpelweg z'n cookie niet kwijt kan in het i-frame (en dat ie wel een cookie kan setten buiten het i-frame waardoor ie die cookie dus nog steeds heeft in het i-frame... ja, inderdaad het is een lastige zin. Ik hoop dat iemand begrijpt wat ik bedoel :-))
Fris in het geheugen is het voor mij nooit.
Ja, dat snap ik wel , maar ja... hoe moet je anders "een website in een andere website draaien". Kan volgens mij alleen met i-frame. De oplossing met het doorgeven van de sessie-id lijkt te werken, alleen weet ik niet of er bepaalde risico's aan zitten.
Ozzie PHP op 13/12/2010 17:53:54:
maar ja... hoe moet je anders "een website in een andere website draaien".
Niet. Gewoon niet doen.
daar kan ik helemaal niks mee.
Ozzie PHP op 13/12/2010 19:12:26:
jee... wat moet ik nou met zo'n antwoord :-/
daar kan ik helemaal niks mee.
daar kan ik helemaal niks mee.
Je kan er niets mee omdat SanThe gelijk heeft. Ten eerste is een i-frame zeer verouderd en wordt het gebruik ervan afgeraden. Ten tweede, je hebt niet eens altijd toestemming om een site van iemand anders in je eigen website te draaien. En ten derde, zoals al eerder vermeld, je kan die sessies niet gaan gebruiken binnen dat i-frame omdat de pagina in het frame op een andere server staat. Sessies wordt per server op de server bijgehouden. Je kan ze niet naar elkaar laten doorsturen of weet ik veel.
Jens
Pffff.... dit gaat in mijn geval allemaal niet op. Ik draai niet een site van iemand anders in mijn site maar precies andersom. Een andere partij draait mijn site in zijn site. De sessies hoeven helemaal niet met elkaar te praten. Ik kreeg alleen mijn eigen sessies niet werkend vanwege het i-frame. Inmiddels heb ik al een paar keer aangegeven dat het gelukt is door de sessie-id mee te sturen in de url. Ik vraag of daar risico's aan verbonden zijn en de enige reacties die ik krijg zijn reacties dat ik geen i-frame moet gebruiken. Helaas, maar het kan niet anders dus ik moet wel. Dus aan opmerkingen dat ik het niet moet gebruiken heb ik echt helemaal niks, ook al is het goed bedoeld.
Mensen met slechte bedoelingen kunnen hier altijd wel iets mee denk ik.
Is dit iets wat je denkt of wat je zeker weet? Ik heb mijn sessie-bestanden niet publiek staan, dus ik zou zeggen dat ze er dan niks mee kunnen?
Weet ik niet 100% zeker. Maar vermoed het wel sterk. Ik denk dat je dat eens zal moeten opzoeken op php.net...
maar, zolang het bestand niet in een publieke directory staat kun je het toch ook niet aanroepen. Iemand die daar het antwoord op weet?
Het bestand zelf staat veilig. Maar als het jou lukt om de server wijs te maken dat dat onderschepte session id jouw session id is dan kan je lekker verder gaan als zijnde de persoon die ingelogd was of noem maar op.
Inderdaad, als je zou weten wat iemands sessie-id is dan zou je die kunen overnemen.
Mijn links zien er nu ongeveer als volgt uit: www.mijnsite.nl/pagina?PHPSESSID=2c406271961v4a09dae2aacb4e5219b
Als iemand anders nu deze url in zijn/haar browser kopieert dan krijgt ie dezelfde sessie informatie.
Theoretisch gezien zou iemand dus een sessie kunnen stelen. Echter, om de sessie te kunnen stelen, moet je nog steeds de sessie-id weten en volgens mij wordt dat erg lastig. Ik zorg er voor 1) dat mijn pagina's niet door zoekmachines kunnen worden geindexeerd 2) dat een sessie gesloten wordt nadat een bestelling is geplaatst 3)dat een sessie na 2 uur automatisch verloopt.
Dat zou toch voldoende moeten zijn? Of vergeet ik nog iets?