login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP - ASP.NET] Interactie

Offline finduilas - 02/12/2014 14:30
Avatar van finduilasPHP gevorderde Goeiemiddag

Momenteel zit ik vast met een applicatie. Ik heb een sessie in ASP.NET met de userlogin,...

Een 2de applicatie is geschreven in PHP. Voor beide applicaties wordt dezelfde database gebruikt. Inloggen gebeurt altijd via de ASP.NET applicatie.

Ik ben dus op zoek naar een manier om de session te lezen in PHP. Er is heel wat over te vinden op het internet (via curl, get (lijkt mij onveilig),..), maar ik geraak er niet aan uit.

Is er een eenvoudige manier?

5 antwoorden

Gesponsorde links
Offline Thomas - 02/12/2014 16:09
Avatar van Thomas Moderator Wat omvat deze "session"? Is dit enkel de informatie die een geauthenticeerde gebruiker identificeert (bijvoorbeeld een userid vastlegt)? ASP.NET moet dit toch ook op een of andere manier onthouden over verschillende pagina's? Wellicht kun je daar gebruik van maken?

Idealiter heb je één voordeur (één loginmechanisme) lijkt mij, waar zowel ASP.NET alsmede PHP kunnen inloggen, bijvoorbeeld via een webservice. Als dat voor nu een te grote tijdsinvestering vergt (of je hier simpelweg de middelen niet voor hebt of je dit niet kunt wijzigen), zou je kunnen overwegen om een zijdeur bij te metselen . Je zou daarbij de informatie die ASP.NET gebruikt kunnen lenen (dit moet wel een cookie zijn oid?).

Andere oplossingen zijn misschien ook mogelijk, maar dan zul je meer moeten uitleggen over de werking denk ik. Checks op IP-basis worden bijvoorbeeld al lastig als meerdere gebruikers op hetzelfde netwerk zitten en van dezelfde internetlijn gebruik maken, via welke ze communiceren met deze applicatie.

Je zou ook even een stap achteruit kunnen nemen, naar deze opzet kijken en je afvragen "waarom gebruik ik twee talen/methodieken binnen hetzelfde systeem/dezelfde database"?
Bedankt door: Abbas
Offline finduilas - 03/12/2014 12:38
Avatar van finduilas PHP gevorderde Ik probeer eens te achterhalen wat er precies in die session zit. Dit wordt gedaan in een aparte service waar ik niet aan kan.. Het werkt online, maar het bestand lijkt beschadigd als ik deze offline haal. Even uitdokteren hoe dit komt. Het lijkt er wel op dat er meer dan een id is opgeslagen.. Of zijn sessions niet makkelijk te manipuleren dat een id al voldoende is om te weten wie ingelogd is.

Het probleem is dus dat het geschreven is door een externe firma en we hier weinig tot niets aan kunnen veranderen.

Dus we moeten gebruik maken van de gegevens die ASP opsloeg. Ik moet me ook eens verdiepen in die sessions. Want cookies worden op de pc van de gebruiker opgeslagen en zijn makkelijker te benaderen, maar hoe zit dat met sessions? Ik gebruik ze zelden of nooit voor zo'n zaken. Enkel maar als er bijna of niets fout kan gaan (vb de taal).

Offline Wijnand - 03/12/2014 14:30
Avatar van Wijnand Moderator Volgens mij zijn sessies lastig te kraken omdat ze inderdaad op de server staan. Daarom is een id volgens mij genoeg.
Offline Thomas - 03/12/2014 14:34
Avatar van Thomas Moderator Uhm, probeer je een (externe?) applicatie te reverse engineeren? Heb je de broncode + sessie-bestanden van deze applicatie? En zijn dit wel sessie-bestanden (als ASP.NET sowieso een standaard manier (en bestandsformaat) heeft voor (opslag van) sessies?), of hebben deze bestanden een specifiek formaat voor gebruik binnen deze applicatie? Misschien zijn ze wel versleuteld of wat dan ook? Heb je documentatie van deze applicatie, wellicht staat hier ook in vermeld hoe (en of) er met deze applicatie informatie uitgewisseld kan worden?

Ik begrijp eigenlijk hoe langer hoe minder wat je probeert te doen. Zelfs als het je lukt om deze bestanden te "kraken" helpt het je waarschijnlijk niet verder. Ik bedoel, wat wil je met die informatie doen? In PHP zo'n ASP.NET-bestand nabouwen? Wat wil je bereiken? Wil je deze applicatie uitbouwen in PHP?

---

Sessie-bestanden in PHP bevatten een geserialiseerd array. Deze bestanden staan opgeslagen aan de serverzijde en zijn niet van buitenaf benaderbaar. De bestandsnaam bevat een hash, bijvoorbeeld sess_9a2g2cu021oaj352i6xh63i8n5. Aan de clientzijde sla je een sessie-cookie op, bijvoorbeeld genaamd PHPSESSID. De inhoud van het cookie bevat deze hash. Als je een pagina opvraagt (via een HTTP GET of POST request) dan wordt jouw cookie-informatie naar de webserver gestuurd. De webserver zoekt vervolgens uit of er een geldig sessie-bestand bestaat met die hash. $_SESSION wordt vervolgens gevuld met die informatie. De "controle" ligt te allen tijde aan de serverzijde. Je zou een sessie(-bestand) dus kunnen vergelijken met een "serverside cookie".

In je applicatie breng je meestal "extra voorzieningen" aan die de identiteit van een gebruiker verder waarborgen. Zonder deze voorzieningen kan het eenvoudig zijn om iemand zijn sessie (en daarmee zijn/haar identiteit) te stelen. Je hoeft namelijk enkel de sleutel (hash) van de sessie te kennen. Als jouw site bijvoorbeeld HTML-invoer toestaat van gebruikers, dan zou iemand via JavaScript document.cookie kunnen doorsturen aan een externe site. Een extra voorziening zou bijvoorbeeld een IP-controle kunnen zijn, zodat als iemand erin slaagt jouw sessie-cookie te stelen, deze onbruikbaar is voor deze persoon (er vanuitgaande dat deze niet hetzelfde IP heeft en jouw IP niet kent en ook niet kan nabootsen (spoofen)).
Offline finduilas - 05/12/2014 10:33
Avatar van finduilas PHP gevorderde De applicatie is al gepublished. Ik kan dus niet aan de services waar de sessie enz wordt aangemaakt. Maar het lijkt er op dat we de bronbestanden toch zouden verkrijgen met wat geduld ;).

Als dat mogelijk is zou ik het liefst overschakelen op cookies. Uiteindelijk zal dit niet zo'n hele grote aanpassing zijn, en het maakt dan ook mogelijk om het op te vragen in PHP.. Dit wordt dus vervolgt zodra ik de bronbestanden bezit.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.164s