We live in a world of WordPress blogs, Joomla sites, and osCommerce shops where users routinely log in to their 'secure' admin areas by sending their usernames and passwords over the internet in plain text. We all know that's bad, but no one ever seems to upgrade their site to use SSL/TLS and developers are quite happy making applications that work over good old http.
Depending on the application, there must be a point at which people don't think it's worth implementing any greater security measures to protect their assets? If the choices are:
- No security at all
- +) Who cares anyway?
- -) Witness spam posts and
Robert'); DROP TABLE students;
- Security from obscurity
- +) Only certain people know which URL to go to
- -) It's only a matter of time...
- Authenticate with a username only
- +) Ok if the username is obscure and well constructed
- -) Brute force attacks are too effective
- Authenticate with a username and password
- +) Marginally better than just a username
- -) Marginally better than just a username
- Authenticate with a hash of username and password
- +) Prevents database hackers stealing password lists
- -) If someone can hack your database, you shouldn't be worrying about plain text passwords
- Authenticate with JavaScript encryption (see Javascript asymmetric encryption and authentication)
- +) Prevents usernames and passwords from being sent over plain text
- -) A Man In The Middle could intercept the JavaScript and steal your passwords anyway
- Do any of the above over SSL
- +) Prevents man in the middle attack
- -) If a hacker is this determined, they'll find another way to bring you down
If the first 5 are easy for your average Wikipedia reader to work out, number 6 needs just a bit more knowledge and hackers ignore number 7 to move on to other vulnerabilities, none of these are actually a satisfactory way to guarantee absolute peace of mind.
Questions:
- What level of security is the cut off point for your average WordPress blog, or phpBB forum?
- Why has username + password become so prevalent?
- How should web application developers create future applications, knowing that an SSL cerrtificate might not always be available?
- Is there really any point in designing a site with a 'secure' area if it is going to be used over http?