I realise the title is the same as this question over here, but please don't eat me. This is for confirmation of my understanding, and for any other folks who want a one-stop shop.
So after doing some research I've compiled the following notes:
- You need some sort of programmable server back-end, e.g.: php. Just the database will not suffice. You should also possess a valid SSL certificate.
- Establish an SSL connection with a CSRF token. Source
- Send the unhashed password over the SSL to the server
- On the server, hash+salt using bcrypt. Store this hash+salted passwords as you would expect (for SQL: in a table as an entry). Also store the salt separately
- Once logged in, keep using SSL to prevent session hijacking. If SSL is lost, force relogin(although it could already be too late, if you're unlucky?)
- When logging in, send the unhashed password over SSL as you would, where it would be appropiately hash+salted and compared with the stored version.
Point 6 is the main issue I have, and on which I couldn't find more information. I've read somewhere that I ought to be salting the password upon every login attempt as well. Is this accurate? How would I do this?
And at any rate, are the rest of my steps correct?