Tech Life

Ilustrační obrázek

Kolize JSESSIONID cookies

27. 05. 2010 11:00    kategorie: Tech Life    autor: VMe    komentářů: 3

Webové aplikace postavené na Java Servletech typicky udržují sezení (aka session) pomocí cookie. Servletová specifikace (ve verzi < 3.0) vyžaduje, aby jméno této cookie bylo JSESSIONID.

 

Pokud se ale dostanete do situace, že na jedné doméně provozujete více aplikací běžících v různých servletových kontejnerech, nastanou problémy. Všechny kontejnery budou používat cookie se stejným jménem a bude docházet ke kolizím, kdy si kontejnery budou tu cookie přepisovat. Uživatel pak např. nebude moci být zároveň přihlášen do různých aplikací bežících v samostaných kontejnerech.

Přímočaré řešení je změnit jméno cookie, která se používá pro identifikaci session.

Úvahy nad tím, jestli je to ideově ryzí řešení, teď ponechme stranou. Každopádně návrh servletové specifikace 3.0 už dovoluje kontejnerům jméno cookie měnit.

Řada servletových kontejnerů přejmenování session cookie umožňuje pouhou změnou konfigurace už dnes.

  • Tomcat: nastavením systémové proměnné org.apache.catalina.SESSION_COOKIE_NAME (od verzí 5.5.28 resp. 6.0.19)
  • JBoss: také systémová proměnná, ale org.apache.catalina.JSESSIONID (i když vlastně obsahuje jádro Tomcatu, takže novější verze už to možná budou mít stejně jako v Tomcatu)
  • Weblogic: ve weblogic.xml, element <session-descriptor><cookie-name>
  • Glassfish: v3 už implementuje servletovou specifikaci 3.0 a jméno cookie jde nastavit přímo ve web.xml v elementu <session-config><cookie-config><name>

Sdílet odkaz:
tisk

Diskuze k článku

Lubos, 7.6.2010 12:14

Nejsem Sionid!

VMe, 7.6.2010 08:47

Bohužel ne vždy se dají aplikace rozlišit jenom prefixem cesty v URL. Představte si, že musíte řešit situaci, kdy cesty /c1/* a /c2/* servíruje kontejner A a cesty /c3/* a /c4/* kontejner B. Jinými slovy: cesty servírované jedním kontejnerem nemají společný prefix.

Filip Jirsák, 30.5.2010 12:21

Součástí cookie je i prefix cesty, pro kterou platí. Takže pokud dochází ke kolizím, je to problém servlet kontejneru, že tuco cestu nenastavuje správně.

Přidat příspěvek

 

Kontakt pro média


Máte zájem o další informace, odborný článek či přednášku na konferenci? Kontaktujte nás prosím na pr@etnetera.cz.

RSS - Tech life


RSS kanál Tech Life Blogu

Offlineblog

Offlineblog

Ljama


Komix z prostředí imaginární firmy.

ljama

Ještě jste ho nečetli? Tak tudy ...

 
Doporučujeme: Nabídka práce, volná pracovní místa - pracovní portál SPRÁVNÝKROK.CZ