<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Sessions As Password Equivalents</title>
	<atom:link href="http://www.symphonious.net/2007/08/20/sessions-as-password-equivalents/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.symphonious.net/2007/08/20/sessions-as-password-equivalents/</link>
	<description>Living in a state of accord.</description>
	<pubDate>Wed, 03 Dec 2008 01:09:03 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
		<item>
		<title>By: Adrian Sutton</title>
		<link>http://www.symphonious.net/2007/08/20/sessions-as-password-equivalents/#comment-105400</link>
		<dc:creator>Adrian Sutton</dc:creator>
		<pubDate>Mon, 20 Aug 2007 06:11:15 +0000</pubDate>
		<guid isPermaLink="false">https://www.symphonious.net/2007/08/20/sessions-as-password-equivalents/#comment-105400</guid>
		<description>Matt, XSS is probably going to be a major issue for you using any form of authentication because the session will be valid and timeouts won't help because you can just keep sending requests to keep the session alive. You could even go so far as sending AJAX requests to change the user's password in most systems.

Santiago,
There's no need to use memory for your sessions and there's no need to use the built-in servlet sessions either. You could replace the word session above with login token. You'd simply have an in-memory cache of recently used sessions and a database or filesystem store of the entire set of sessions - the number of sessions is then unlikely to become the bottleneck for scalability.</description>
		<content:encoded><![CDATA[<p>Matt, XSS is probably going to be a major issue for you using any form of authentication because the session will be valid and timeouts won&#8217;t help because you can just keep sending requests to keep the session alive. You could even go so far as sending AJAX requests to change the user&#8217;s password in most systems.</p>
<p>Santiago,<br />
There&#8217;s no need to use memory for your sessions and there&#8217;s no need to use the built-in servlet sessions either. You could replace the word session above with login token. You&#8217;d simply have an in-memory cache of recently used sessions and a database or filesystem store of the entire set of sessions - the number of sessions is then unlikely to become the bottleneck for scalability.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Santiago Gala</title>
		<link>http://www.symphonious.net/2007/08/20/sessions-as-password-equivalents/#comment-105396</link>
		<dc:creator>Santiago Gala</dc:creator>
		<pubDate>Mon, 20 Aug 2007 05:44:10 +0000</pubDate>
		<guid isPermaLink="false">https://www.symphonious.net/2007/08/20/sessions-as-password-equivalents/#comment-105396</guid>
		<description>Re: cookies that &lt;em&gt;just&lt;/em&gt; time out when the browser closes, the Java Servlet Specification says that the JSESSIONID one used
for Servlets expires when the browser closes. This is what
happens for &lt;a&gt;cookies without explicit date&lt;/a&gt;:

&lt;blockquote&gt;
The cookie setter can specify a deletion date, in which case the cookie will be removed on that date. If the cookie setter does not specify a date, the cookie is removed once the user quits his or her browser.
&lt;/blockquote&gt;

The problem with generous expiration time in the server side is that memory is needed in the server &lt;em&gt;for each outstanding request&lt;/em&gt;. This means for each robot that touched our page and, unless we are careful to specify a handshake to start a session, our memory will fly away.</description>
		<content:encoded><![CDATA[<p>Re: cookies that <em>just</em> time out when the browser closes, the Java Servlet Specification says that the JSESSIONID one used<br />
for Servlets expires when the browser closes. This is what<br />
happens for <a>cookies without explicit date</a>:</p>
<blockquote><p>
The cookie setter can specify a deletion date, in which case the cookie will be removed on that date. If the cookie setter does not specify a date, the cookie is removed once the user quits his or her browser.
</p></blockquote>
<p>The problem with generous expiration time in the server side is that memory is needed in the server <em>for each outstanding request</em>. This means for each robot that touched our page and, unless we are careful to specify a handshake to start a session, our memory will fly away.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt Brubeck</title>
		<link>http://www.symphonious.net/2007/08/20/sessions-as-password-equivalents/#comment-105388</link>
		<dc:creator>Matt Brubeck</dc:creator>
		<pubDate>Mon, 20 Aug 2007 03:32:51 +0000</pubDate>
		<guid isPermaLink="false">https://www.symphonious.net/2007/08/20/sessions-as-password-equivalents/#comment-105388</guid>
		<description>Cross-site scripting vulnerabilities are incredibly common, and can be used to steal session cookies.</description>
		<content:encoded><![CDATA[<p>Cross-site scripting vulnerabilities are incredibly common, and can be used to steal session cookies.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adrian Sutton</title>
		<link>http://www.symphonious.net/2007/08/20/sessions-as-password-equivalents/#comment-105382</link>
		<dc:creator>Adrian Sutton</dc:creator>
		<pubDate>Mon, 20 Aug 2007 02:06:46 +0000</pubDate>
		<guid isPermaLink="false">https://www.symphonious.net/2007/08/20/sessions-as-password-equivalents/#comment-105382</guid>
		<description>No, users get annoyed whenever you interrupt their work flow - requiring them to log in again is such an interruption.  As for unattended PCs, that's a security risk that exists for all forms of standard HTTP authentication (basic, digest, NTLM etc) because the browser remembers the login details until the end of the session with no timeout.</description>
		<content:encoded><![CDATA[<p>No, users get annoyed whenever you interrupt their work flow - requiring them to log in again is such an interruption.  As for unattended PCs, that&#8217;s a security risk that exists for all forms of standard HTTP authentication (basic, digest, NTLM etc) because the browser remembers the login details until the end of the session with no timeout.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Byron Ellacott</title>
		<link>http://www.symphonious.net/2007/08/20/sessions-as-password-equivalents/#comment-105381</link>
		<dc:creator>Byron Ellacott</dc:creator>
		<pubDate>Mon, 20 Aug 2007 01:59:07 +0000</pubDate>
		<guid isPermaLink="false">https://www.symphonious.net/2007/08/20/sessions-as-password-equivalents/#comment-105381</guid>
		<description>The security risk you increase is that of the unattended PC.

I find that most users are primarily bothered by sessions that time out while they're doing something: sessions that time out a fixed time after being created, regardless of user activity; and sessions that time out after they've spent some time preparing a form for submission, discarding their work.  You can solve the first problem by extending the life of a session each time the user makes a request.  Ideally, you should also issue a new cookie value after each request (storing the last two values, in case there is a connection issue preventing the browser from picking up the new one) thus limiting the lifetime of a session key to the user's next request (or log out, or time out, whichever happens first).

The second problem is harder to solve without introducing more security risks.  Generally it just means you need your re-authenticate mechanism to exactly preserve and repeat any request, including a POST.  If your application's architecture doesn't allow for that already, you're likely in for a rough time.</description>
		<content:encoded><![CDATA[<p>The security risk you increase is that of the unattended PC.</p>
<p>I find that most users are primarily bothered by sessions that time out while they&#8217;re doing something: sessions that time out a fixed time after being created, regardless of user activity; and sessions that time out after they&#8217;ve spent some time preparing a form for submission, discarding their work.  You can solve the first problem by extending the life of a session each time the user makes a request.  Ideally, you should also issue a new cookie value after each request (storing the last two values, in case there is a connection issue preventing the browser from picking up the new one) thus limiting the lifetime of a session key to the user&#8217;s next request (or log out, or time out, whichever happens first).</p>
<p>The second problem is harder to solve without introducing more security risks.  Generally it just means you need your re-authenticate mechanism to exactly preserve and repeat any request, including a POST.  If your application&#8217;s architecture doesn&#8217;t allow for that already, you&#8217;re likely in for a rough time.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
