Toon posts:

[ASP.NET] Cookieless session probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik heb een vraagje over cookieless session.

stel dat een gebruiker geen cookies accepteren. dan wordt er gebruik gemaakt van cookieless session (sessionID krijg je dan te zien in de browser). het werkt allemaal prima. maar hier komt het probleem:

in een willekeurige website voer ik het volgende image tag in een willekeurige webpage:

[img]"http://localhost/[b]ThirdPartyWebSite[/b]/s?SomeQueryString[/img]

Elke keer als een bezoeker een webpage aanvraagt dat het bovenstaande image tag bevat wordt er een sessie bijgehouden door de ThirdPartyWebSite. Dit werkt allemaal alleen niet als de gebruiker cookies blokkeren. Is er misschien een oplossing om dit probleem op te lossen? in iedergeval om een sessie van een bezoeker bij te houden.

of zijn er andere mogelijkheden?

alvast bedankt

b

  • Hydra
  • Registratie: September 2000
  • Laatst online: 22-01 13:59
Sessie ID meegeven in de URL?

https://niels.nu


Verwijderd

Topicstarter
dat is dus het probleem. De Sessie ID wordt door de ThirdPartyWebSite gegeneert.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-04 10:43

Janoz

Moderator Devschuur®

!litemod

Gewoon je eigen site die gegenereerde sessie id op laten vragen en laten invoegen in je pagina. Op dat moment weet jij ook welke sessie op je local site hoort bij welke sessie op je remote site.

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


Verwijderd

Topicstarter
Janoz schreef op vrijdag 02 december 2005 @ 11:32:
Gewoon je eigen site die gegenereerde sessie id op laten vragen en laten invoegen in je pagina. Op dat moment weet jij ook welke sessie op je local site hoort bij welke sessie op je remote site.
hmm misschien heb ik het niet goed genoeg uitgelegd. Ik zal het nogmaals proberen:

er zijn twee webapplicaties, namelijk:
- een willekeurige website;
- een website die de sessie bijhoudt van de willekeurige website.

de website die de sessie bijhoudt van de willekeurige website genereerd de SessionID. Een willekeurige website "communiceert" met de website, die de sessieID genereerd, met behulp van een image tag.

zodra er een request binnenkomt in de website die de sessionID genereert wordt er een nieuwe sessie gestart (afhankelijk van de sessieID). Als deze niet nieuw is genereerd deze dus een SessionID.

dus als ik jou goed begrijp is het mogelijk om deze SessionID op tevragen door de willekeurige website? zo ja hoe krijg ik dit dan voor elkaar?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-04 10:43

Janoz

Moderator Devschuur®

!litemod

Door de willekeurige website deze id rechtstreeks op te laten vragen bij de website die de sessies bijhoudt.
A vraag id aan B
A renderd pagina met plaatje plusID link naar B
Gebruiker krijgt pagina en vraagt plaatje op bij B met ID

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


Verwijderd

Topicstarter
Janoz schreef op vrijdag 02 december 2005 @ 12:43:
Door de willekeurige website deze id rechtstreeks op te laten vragen bij de website die de sessies bijhoudt.
A vraag id aan B
A renderd pagina met plaatje plusID link naar B
Gebruiker krijgt pagina en vraagt plaatje op bij B met ID
Aha oke maar mag ik vragen hoe ik dit kan bereiken? kan je misschien een voorbeeldje geven? dat zal ik erg waarderen

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-04 10:43

Janoz

Moderator Devschuur®

!litemod

Hoe duidelijk wil je je voorbeeld eigenlijk hebben? Ik heb toch al een redelijke outline gegeven van wat je ongeveer moet doen? Als je hier verwacht dat je vaag omschreven probleem wordt beantwoord met een kant en klare applicatie ben je hier aan het verkeerde adres.

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


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Wat ik me dan afvraag, is hoe de serverapplicatie het sessie-ID van de gebruiker kan ophalen. Bij het aanmaken van een sessie gebeurt dat door directe communicatie tussen Third Party Site en de gebruiker. De serverapp zelf de sessie laten aanmaken bij Third Party Site lijkt me redelijk nutteloos, omdat per IP maar 1 sessie kan zijn.

Het lijkt me niet dat de server app uberhaupt het sessie-ID van de gebruiker op Third Party Site zou kunnen achterhalen, anders heb je nl. een lekker security-probleempje: bezoek mijn site, die laat jou inloggen bij [insert site met session id in URL] waar je automatisch inlogt dankzij je cookies. Mijn site heeft dan je session id en zou daar (in theorie) lekker jouw account mee kunnen overnemen.

Certified smart block developer op de agile darkchain stack. PM voor info.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-04 10:43

Janoz

Moderator Devschuur®

!litemod

Dat klopt. Het is ook een erg ingewikkeld probleem. Echter zijn er wel manieren waarop je het kunt laten werken. Randvoorwaarden daarbij zijn wel dat:
• App server en 3th party server moeten elkaar kunnen vertrouwen. Dit maakt het iig al onmogelijk om je hotmail inlog over te nemen aangezien hotmail jou siteje niet vetrouwd.
• Op beide servers moet code geimplementeerd worden die met elkaar kan communiseren.
• Het blijft nog steeds zo goed als onmogelijk danwel enorm lastig om dezelfde session ook nog aan weer een andere 3rd party server te koppelen. Dit laatste betekent dat een gebruiker die een plaatje via de pagina van 3rd party A binnen haalt en een plaatje via de pagina van 3rd party B binnen haalt voor de app server als twee verschillende gebruikers wordt gezien.

[ Voor 11% gewijzigd door Janoz op 02-12-2005 15:20 ]

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


Verwijderd

Topicstarter
Bedankt voor de reacties mensen

@Janoz
Nee ik verwacht ook niet dat iemand anders alles voor mij gaat maken. Het liefst wil ik het zelf proberen maar omdat ik niet precies weet hoe ik dit op kan lossen heb ik deze topic geopend.

Dus als ik het goed begrijp moet je zo ie zo aan beide kanten iets voor schrijven om dit te laten werken?

of is het ook mogelijk door te kijken naar de IP en gebruikte UserAgent om te bepalen of het dezelfde user is voor 1 sessie?

  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
misschien helpt dit:

ik heb een webform gemaakt met daarin:
code:
1
2
3
    <form id="Form1" method="post" runat="server">
            <%= HttpContext.Current.Session.SessionId %>
    </form>

inde web.config van die web-app heb ik hetvolgende ingesteld:
code:
1
2
3
4
5
6
7
    <sessionState 
            mode="InProc"
            stateConnectionString="tcpip=127.0.0.1:42424"
            sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
            cookieless="true" 
            timeout="20" 
    />

alleen de 'cookieless' op true gezet dus

als ik nu die webform opvraag, dan genereert ie automatisch een sessie Id en die plakt ie in de url ertussen.

Als je die sessieID verandert (in de URL), dan wordt er door de runtime automatisch een nieuwe sessie aangemaakt. Dat kan je controleren door de output van de pagina te verglijken met het sessieId in de url. (die zijn hetzelfde)

is dat wat je bedoelt ?

[ Voor 9% gewijzigd door joopst op 02-12-2005 15:49 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-04 10:43

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op vrijdag 02 december 2005 @ 15:47:
of is het ook mogelijk door te kijken naar de IP en gebruikte UserAgent om te bepalen of het dezelfde user is voor 1 sessie?
Daarmee kom je bijvoorbeeld al in de problemen met proxy servers of NAT omgevingen. Zeker bij kantoren heb je daarnaast vaak dezelfde config. Deze mensen gaan dan allemaal met hetzelfde IP en dezelfde user agent het net op.

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


Verwijderd

Topicstarter
Janoz schreef op vrijdag 02 december 2005 @ 16:10:
[...]


Daarmee kom je bijvoorbeeld al in de problemen met proxy servers of NAT omgevingen. Zeker bij kantoren heb je daarnaast vaak dezelfde config. Deze mensen gaan dan allemaal met hetzelfde IP en dezelfde user agent het net op.
Ja inderdaad. dat wordt inderdaad lastig. Maar hoe heeft nedstat / sitestat of een andere soortgelijke software pakketten dit dan geregeld?

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Janoz schreef op vrijdag 02 december 2005 @ 16:10:
[...]


Daarmee kom je bijvoorbeeld al in de problemen met proxy servers of NAT omgevingen. Zeker bij kantoren heb je daarnaast vaak dezelfde config. Deze mensen gaan dan allemaal met hetzelfde IP en dezelfde user agent het net op.
En de catch-22 is dat er maar 1 manier is om dat op te lossen, en dat is een cookie setten :P

Certified smart block developer op de agile darkchain stack. PM voor info.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-04 10:43

Janoz

Moderator Devschuur®

!litemod

Gokken. Daarnaast is bij het tellen van hits meerdere personen als 1 zien een acceptabel risico. VOor authorizatie is dat natuurlijk een heel ander verhaal.

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


  • Tom
  • Registratie: Juni 1999
  • Niet online

Tom

Die ThirdPartyWebsite hang je onder je eigen website als virtuele directory. Die HTML-imagetag vervangen door een ASP:Image object. ImageURL daarvan maak je ~/ThirdPartyWebsite/blaat.
Pagina: 1