There are several measures we might take to tighten up default  
security in a backwards-compatible way.

1. Use IS_STRONG() by default in the welcome application template.

2. Add salted hash methods, in particular a) random salt, and b) using  
the user's email address as salt (it's not as good as random salt, but  
it doesn't have to be appended to the hash, since it's already  
available).

3. Add a meta hash method for migrating hashes. Let a site that's  
using currently using some WEAKHASH() (default CRYPT() in particular)  
to specify a hash type of MIGRATEHASH(WEAKHASH, STRONGHASH). The rule  
for this method is to always use STRONGHASH, with one exception: on  
login, if STRONGHASH fails, try WEAKHASH. If WEAKHASH succeeds, then  
update the user table with STRONGHASH.

4. Given (2) and (3), then by default CRYPT() could be redefined as  
MIGRATEHASH(OLDCRYPT, STRONGHASH), for some strong hash.

5. Add a defense against blind brute-force attacks by rate-limiting  
login attempts, but some method tbd.

6. Consider some mechanism that requires a user to choose a new  
password (aging, perhaps), so that IS_STRONG can be enforced.

7. Encrypt the user table (or at least critical fields in it) with a  
secret key, so that if someone gains access to the database, they  
don't get access to email addresses or password hashes. This raises  
the question of how to keep the secret key secret, but at the very  
least it can be kept separate from the database, say in an access- 
controlled file in the filesystem.

8. Note that (7) introduces the general problem of secret-key  
management, which is also an issue for HMACs. Some general solution  
would be nice.

9. Finally, none of this helps against a stolen-password attack. For  
that, we ought to be supporting two-factor authentication. I assume  
that we can do this already via third-party methods; perhaps we could  
identify someone supporting something like the Verisign dongle.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to