MD5 in Javascript
One of the things that has always bugged me about creating login forms for web based applications is that the password is passed in clear text when the user logs in. Even if you then set a session cookie of some sort for future access the password has stilled been transmitted unencrypted at least once.
The obvious way around this is to use https, but for the vast majority of sites this isn’t an option. Enter Javascript MD5—an implementation of the cryptographically secure MD5 hashing function in Javascript. This can be used to build a CHAP login system where the client sends the MD5 of the password appended on to a challenge string, which the server can then recalculate and compare (all without the password being transmitted from client to server).
The author links to implementations of this idea in various languages, and implementing it from scratch in PHP is quite trivial. With a bit of care the system can be set up so that browsers with no javascript support submit the password normally, while those with javascript send only the hash.
A modified version of the system is used by Yahoo’s Login Page, so it is certainly feasible for deployment in a commercial environment. Obviously an https encrypted session is far more secure, but for non-ecommerce web applications this technique is a no-brainer.
Uh, Simon. You know about HTTP Digest Authentication, right? ☺
Ian Hickson - 20th April 2003 19:35 - #
Something clicks - I'd only ever used basic authentication before which (as far as I can remember) just encodes the password in base64. So digest authentication does the same thing as that javascript thing? Coooool... still not ideal for writing web applications though as you lose the ability to log out / control the length of the session.
Simon Willison - 20th April 2003 20:28 - #
rick - 21st April 2003 01:00 - #
Sam Buchanan - 21st April 2003 03:21 - #
Harry Fuecks - 21st April 2003 16:55 - #
That's exactly what I'm doing. Take a look at the login form I've been putting together here (for a Uni project).
Simon Willison - 21st April 2003 17:02 - #
Dave - 23rd April 2003 02:23 - #
Do you have any solution for this method completely breaking the browser's auto-complete mechanism? I haven't found any way around it...
Tom - 24th April 2003 09:49 - #
michele - 7th July 2003 14:36 - #
tester - 11th March 2005 20:32 - #
Kelt - 29th June 2006 03:39 - #