<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Login forms are broken in ruby on rails</title>
	<atom:link href="http://lesspostmoreget.com/2009/08/14/login-forms-are-broken/feed/" rel="self" type="application/rss+xml" />
	<link>http://lesspostmoreget.com/2009/08/14/login-forms-are-broken/</link>
	<description>Thoughts on software development and the web</description>
	<lastBuildDate>Fri, 04 May 2012 15:50:04 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: wiscoDude</title>
		<link>http://lesspostmoreget.com/2009/08/14/login-forms-are-broken/#comment-51</link>
		<dc:creator><![CDATA[wiscoDude]]></dc:creator>
		<pubDate>Sat, 27 Feb 2010 16:44:28 +0000</pubDate>
		<guid isPermaLink="false">http://lesspostmoreget.com/?p=36#comment-51</guid>
		<description><![CDATA[Hey Craig, thanks for the comments.  

All systems for logging in that I know of do not enforce uniqueness among passwords.  It would be a strange constraint on a user&#039;s password and I think there are enough of those already.  (&lt;a href=&quot;http://lesspostmoreget.com/2008/03/22/passwords-gone-wild/&quot; rel=&quot;nofollow&quot;&gt;passwords gone wild&lt;/a&gt;)

So, you could never reliably look up a user by the password entered.  The only choice is to first look up by the unique token (email address, user name, whatever) and then make sure the password entered matches the password stored.  (I&#039;m simplifying, we shouldn&#039;t store the original password.)

With this said, your example doesn&#039;t actually cause a problem. &quot;def&quot; could be the password for multiple people and it is simply ignored because we can make no claims with the paucity of information it contains.

On the other hand, because user names are forced to be unique, we can very well assume that if a person enters John123, they intended to sign in to that account.

It still comes down to an incomplete or misguided notion of security by the developers of the common rails authentication gems.]]></description>
		<content:encoded><![CDATA[<p>Hey Craig, thanks for the comments.  </p>
<p>All systems for logging in that I know of do not enforce uniqueness among passwords.  It would be a strange constraint on a user&#8217;s password and I think there are enough of those already.  (<a href="http://lesspostmoreget.com/2008/03/22/passwords-gone-wild/" rel="nofollow">passwords gone wild</a>)</p>
<p>So, you could never reliably look up a user by the password entered.  The only choice is to first look up by the unique token (email address, user name, whatever) and then make sure the password entered matches the password stored.  (I&#8217;m simplifying, we shouldn&#8217;t store the original password.)</p>
<p>With this said, your example doesn&#8217;t actually cause a problem. &#8220;def&#8221; could be the password for multiple people and it is simply ignored because we can make no claims with the paucity of information it contains.</p>
<p>On the other hand, because user names are forced to be unique, we can very well assume that if a person enters John123, they intended to sign in to that account.</p>
<p>It still comes down to an incomplete or misguided notion of security by the developers of the common rails authentication gems.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Craig</title>
		<link>http://lesspostmoreget.com/2009/08/14/login-forms-are-broken/#comment-50</link>
		<dc:creator><![CDATA[Craig]]></dc:creator>
		<pubDate>Fri, 26 Feb 2010 21:49:06 +0000</pubDate>
		<guid isPermaLink="false">http://lesspostmoreget.com/?p=36#comment-50</guid>
		<description><![CDATA[The reason for the ambiguous error message may not be just security. Consider two users: John123 (password: &quot;abc&quot;) and John124 (password: &quot;def&quot;). If I enter John123 and &quot;def&quot;, how do I know which is wrong. It is a valid password for somebody, and it is a valid username for somebody else. All I know is that the two do not match, so I tell them that one of them is wrong. It is not about security at all, it is about my inability to distinguish which field is wrong.]]></description>
		<content:encoded><![CDATA[<p>The reason for the ambiguous error message may not be just security. Consider two users: John123 (password: &#8220;abc&#8221;) and John124 (password: &#8220;def&#8221;). If I enter John123 and &#8220;def&#8221;, how do I know which is wrong. It is a valid password for somebody, and it is a valid username for somebody else. All I know is that the two do not match, so I tell them that one of them is wrong. It is not about security at all, it is about my inability to distinguish which field is wrong.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: wiscoDude</title>
		<link>http://lesspostmoreget.com/2009/08/14/login-forms-are-broken/#comment-21</link>
		<dc:creator><![CDATA[wiscoDude]]></dc:creator>
		<pubDate>Fri, 04 Sep 2009 19:58:23 +0000</pubDate>
		<guid isPermaLink="false">http://lesspostmoreget.com/?p=36#comment-21</guid>
		<description><![CDATA[Great point Jon. 

We&#039;re definitely closer now than we were a year ago.  There are getting to be more systems that people are signed into all the time.  Outsourcing authentication to those other sites where people are almost always signed in, to automate authentication for your site - where your users are probably almost never signed in - is the way to go.

With the latest funding for JanRain, we&#039;ll probably see many  improvements in the coming year.

But for now, as a site owner, I get a bit nervous about my user&#039;s understanding that process.  Looking forward to when this is no longer an issue.]]></description>
		<content:encoded><![CDATA[<p>Great point Jon. </p>
<p>We&#8217;re definitely closer now than we were a year ago.  There are getting to be more systems that people are signed into all the time.  Outsourcing authentication to those other sites where people are almost always signed in, to automate authentication for your site &#8211; where your users are probably almost never signed in &#8211; is the way to go.</p>
<p>With the latest funding for JanRain, we&#8217;ll probably see many  improvements in the coming year.</p>
<p>But for now, as a site owner, I get a bit nervous about my user&#8217;s understanding that process.  Looking forward to when this is no longer an issue.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jon Larkowski</title>
		<link>http://lesspostmoreget.com/2009/08/14/login-forms-are-broken/#comment-20</link>
		<dc:creator><![CDATA[Jon Larkowski]]></dc:creator>
		<pubDate>Fri, 04 Sep 2009 03:41:54 +0000</pubDate>
		<guid isPermaLink="false">http://lesspostmoreget.com/?p=36#comment-20</guid>
		<description><![CDATA[Totally agree! In most contexts anyways...

However, there&#039;s an even deeper rant that I have... Just use OpenID! Let another service worry about authentication issues. That shouldn&#039;t be your app&#039;s concern. Slap on something like https://rpxnow.com/ and be done with it.

This is wishful thinking, though. It&#039;s the thinking of a programmer who&#039;d rather outsource this nonsense and get to the real meat of the app.

I&#039;m aware that you&#039;ll probably just lose a ton of customers who can&#039;t figure out OpenID. But it&#039;s my dream of convenience that one day, every web app I sign in to is just OpenID.]]></description>
		<content:encoded><![CDATA[<p>Totally agree! In most contexts anyways&#8230;</p>
<p>However, there&#8217;s an even deeper rant that I have&#8230; Just use OpenID! Let another service worry about authentication issues. That shouldn&#8217;t be your app&#8217;s concern. Slap on something like <a href="https://rpxnow.com/" rel="nofollow">https://rpxnow.com/</a> and be done with it.</p>
<p>This is wishful thinking, though. It&#8217;s the thinking of a programmer who&#8217;d rather outsource this nonsense and get to the real meat of the app.</p>
<p>I&#8217;m aware that you&#8217;ll probably just lose a ton of customers who can&#8217;t figure out OpenID. But it&#8217;s my dream of convenience that one day, every web app I sign in to is just OpenID.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: wiscoDude</title>
		<link>http://lesspostmoreget.com/2009/08/14/login-forms-are-broken/#comment-10</link>
		<dc:creator><![CDATA[wiscoDude]]></dc:creator>
		<pubDate>Sat, 15 Aug 2009 14:33:21 +0000</pubDate>
		<guid isPermaLink="false">http://lesspostmoreget.com/?p=36#comment-10</guid>
		<description><![CDATA[Thanks for the comments Mark.  And thanks for that link.  I like this quote from that article.

&quot;They know what the real risks are at work, and that they all revolve around not getting the job done. Those risks are real and tangible, and employees feel them all the time.&quot;]]></description>
		<content:encoded><![CDATA[<p>Thanks for the comments Mark.  And thanks for that link.  I like this quote from that article.</p>
<p>&#8220;They know what the real risks are at work, and that they all revolve around not getting the job done. Those risks are real and tangible, and employees feel them all the time.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: markmceahern</title>
		<link>http://lesspostmoreget.com/2009/08/14/login-forms-are-broken/#comment-9</link>
		<dc:creator><![CDATA[markmceahern]]></dc:creator>
		<pubDate>Sat, 15 Aug 2009 14:08:07 +0000</pubDate>
		<guid isPermaLink="false">http://lesspostmoreget.com/?p=36#comment-9</guid>
		<description><![CDATA[Schneier&#039;s article provides some interesting food for thought on people&#039;s intuition about risk:

http://www.guardian.co.uk/technology/2009/aug/05/bruce-schneier-risk-security]]></description>
		<content:encoded><![CDATA[<p>Schneier&#8217;s article provides some interesting food for thought on people&#8217;s intuition about risk:</p>
<p><a href="http://www.guardian.co.uk/technology/2009/aug/05/bruce-schneier-risk-security" rel="nofollow">http://www.guardian.co.uk/technology/2009/aug/05/bruce-schneier-risk-security</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark McEahern</title>
		<link>http://lesspostmoreget.com/2009/08/14/login-forms-are-broken/#comment-7</link>
		<dc:creator><![CDATA[Mark McEahern]]></dc:creator>
		<pubDate>Sat, 15 Aug 2009 13:27:53 +0000</pubDate>
		<guid isPermaLink="false">http://lesspostmoreget.com/?p=36#comment-7</guid>
		<description><![CDATA[It&#039;s helpful to analyze the supposed risk that someone will hack into a user account:

1.  They may already know the username (because they&#039;re targeting a specific person).  In this case, obfuscating the error information doesn&#039;t mitigate the risk.

2.  The hack attempt is automated and is based on a high volume of attempts.  This is what things like Authlogic::Session::BruteForceProtection are for.

3.  I assume banks have to worry about this problem more than just some random website.  What do banks generally do?  Nowadays, they seem to make the login a two-phase process:  username first.  Presumably, the result of entering a non-existent username is different than the result of entering an existent one.  That&#039;s probably the best evidence so far that obfuscating the error information in a one-phase process is a questionable mitigation.]]></description>
		<content:encoded><![CDATA[<p>It&#8217;s helpful to analyze the supposed risk that someone will hack into a user account:</p>
<p>1.  They may already know the username (because they&#8217;re targeting a specific person).  In this case, obfuscating the error information doesn&#8217;t mitigate the risk.</p>
<p>2.  The hack attempt is automated and is based on a high volume of attempts.  This is what things like Authlogic::Session::BruteForceProtection are for.</p>
<p>3.  I assume banks have to worry about this problem more than just some random website.  What do banks generally do?  Nowadays, they seem to make the login a two-phase process:  username first.  Presumably, the result of entering a non-existent username is different than the result of entering an existent one.  That&#8217;s probably the best evidence so far that obfuscating the error information in a one-phase process is a questionable mitigation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nate Sutton</title>
		<link>http://lesspostmoreget.com/2009/08/14/login-forms-are-broken/#comment-6</link>
		<dc:creator><![CDATA[Nate Sutton]]></dc:creator>
		<pubDate>Fri, 14 Aug 2009 15:28:16 +0000</pubDate>
		<guid isPermaLink="false">http://lesspostmoreget.com/?p=36#comment-6</guid>
		<description><![CDATA[I agree, it&#039;s inconsistent.]]></description>
		<content:encoded><![CDATA[<p>I agree, it&#8217;s inconsistent.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: wiscoDude</title>
		<link>http://lesspostmoreget.com/2009/08/14/login-forms-are-broken/#comment-5</link>
		<dc:creator><![CDATA[wiscoDude]]></dc:creator>
		<pubDate>Fri, 14 Aug 2009 15:21:36 +0000</pubDate>
		<guid isPermaLink="false">http://lesspostmoreget.com/?p=36#comment-5</guid>
		<description><![CDATA[Hey Nate,

What I&#039;m getting at is there isn&#039;t actually a trade off.  If you think you&#039;re implementing a security measure through obfuscation in the login form, but you provide that same information in the forgot password form, then the only thing you are doing is irritating your users.  No security/risk mitigation has been implemented.

Unless I&#039;m missing something, which is totally possible.]]></description>
		<content:encoded><![CDATA[<p>Hey Nate,</p>
<p>What I&#8217;m getting at is there isn&#8217;t actually a trade off.  If you think you&#8217;re implementing a security measure through obfuscation in the login form, but you provide that same information in the forgot password form, then the only thing you are doing is irritating your users.  No security/risk mitigation has been implemented.</p>
<p>Unless I&#8217;m missing something, which is totally possible.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nate Sutton</title>
		<link>http://lesspostmoreget.com/2009/08/14/login-forms-are-broken/#comment-4</link>
		<dc:creator><![CDATA[Nate Sutton]]></dc:creator>
		<pubDate>Fri, 14 Aug 2009 14:54:51 +0000</pubDate>
		<guid isPermaLink="false">http://lesspostmoreget.com/?p=36#comment-4</guid>
		<description><![CDATA[You&#039;re right, it&#039;s revealing too much information if that amount of security is more important than usability. It&#039;s all a usability/security trade-off. What it mitigates in the forgotten password form is user confusion and support requests when the person enters their username or email wrong and therefore the our forgotten password form is broken. It&#039;s a small trade-off but may not be worth the security risk depending on the application.]]></description>
		<content:encoded><![CDATA[<p>You&#8217;re right, it&#8217;s revealing too much information if that amount of security is more important than usability. It&#8217;s all a usability/security trade-off. What it mitigates in the forgotten password form is user confusion and support requests when the person enters their username or email wrong and therefore the our forgotten password form is broken. It&#8217;s a small trade-off but may not be worth the security risk depending on the application.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

