Caldarale, Charles R wrote:
From: Scott Hamilton [mailto:scott.hamil...@plateau.com]
Subject: RE: Is there a better way to disable JSESSIONID in the URLs?

I could be missing something, but on a request where a session is
created it appears as though Tomcat will both set the cookie AND do any necessary URL rewriting in order to ensure that the cookie
is preserved.

Sorry, you're right; at that point Tomcat doesn't know if the client supports 
cookies.  However, when skimming through the Tomcat code, the only internal 
call to encodeURL() that I can find appears to be called only for relative 
URLs, so possibly making your initial URLs absolute might avoid appending the 
jsessionid.  (But I could have easily missed a call, and there may be another 
method that's doing the appending.)

The issue in question isn't so much about determined hackers
but hapless users who will bookmark URLs or worse, copy URLs
to email to their co-workers.

"Hapless" being the operative word.  I think you're stuck with using a filter.


Could/should not Tomcat at least verify, when it gets a JSESSIONID from a client and retrieves the corresponding session information, that the IP address of this current client matches the client IP address (which would have been) previously stored in the session ?

Or would this introduce other problems ?

I know that it is not really a "solution", because hapless users will anyway continue (mostly innocently) to email links to their colleagues, and they will wonder why they do not work.
And it is not a foolproof security system either.
But at least then these links would not so easily "work" and give cold sweats to these people's network admins.


If I understand correctly how it works, then currently the following scenario is possible, isn't it ?

Within a corporate LAN, all users must login into their workstation using some form of network login (in 99% of the practical cases, that would be Windows NTLM). Then they call up an application residing on a corporate Tomcat host. This host is configured so as to automatically pick up the user's network user-id (through e.g. Jespa, or Waffle, or similar), and use it as the "Tomcat user-id".
Then this first user session gets a tomcat session and associated JSESSIONID.
The application checks that the user session is authenticated, but also controls access to some information in function of this user-id. Now this particular user gets a link to a resource, accessible to his user-id, and then copies that link to a colleague (also logged-in into the corporate network), who normally would not have access to that resource. But because the link contains the jsessionid of the first user, the colleague would gain access to the resource, without either one of them even thinking about it.

This is inside a corporate LAN, where one would normally tend to consider communications as "trusted", and thus to not really need SSL. The authentication method is fairly secure, in the sense that passwords are not exchanged, and Tomcat can "trust" the user-id as received by the first user's authentication method. But by simply exchanging this link, the users unwittingly or not break the access control mechanisms buried deep into an application. Furthermore, now these two users can continue to interact with the application, both within the same Tomcat session, although they are on different workstations altogether ?

To me, that sounds really bad.



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to