Ask HN: The correct way to email users their PLAINTEXT passwords.
When he said that I should start thinking about pulling all of the user accounts and user data from this older web application and creating everything on my application, I started thinking about how best to manage the user accounts... however, he then informed me that all of the account passwords are stored in plaintext.
Now, seeing as my application definately does not store any passwords in plaintext, and I have access to the plaintext versions, do you think it appropriate, to just use this plaintext version when creating the new user accounts and then send out an email to the users to notify them that their information has been ported to our new application (and include their plaintext password alongside).
We aren't some large company where it would make page 1 of HN if we sent out the plaintext version for this one time.
Additionally, because people pay for a year in advance, it could be that some people actually don't remember their passwords, so there is some high value in giving them a friendly nudge.
Thoughts? Alternate ideas would be a once use password free click link in the email.
Why should the users have to know anything?
It's just important to not lose any of the new users which this industry has a high churn rate (and we are providing the new service that they have previously been paying for for free, but we have a lot of upsells)
I would advise sending anyone a plain text password, because when you do, they will realize that not only did the old company store them that way, they also transferred them to a new company in plain text.
It has a prefix for the hashing algorithm at the beginning, so it can check which algorithm is being used for each password:
sha1$a1976$a36cc8cbf81742a8fb52e221aaeab48ed7f58ab4
So in your case, you could add a prefix 'txt$' in front of plain text passwords, and when the user successfully logs in, have it hash the password and save it in the database.
The advantage of doing it the way Django does is that the "upgrade on successful login" lets you change your hash without causing problems with the users.
Give the users a bonus or some reason for logging into their account and most of your passwords will get fixed automatically.
If you're a bank, plaintext passwords are bad.
If you're HN, it really doesn't matter much(IMO).
The level of security should match the level of the threat - most people don't need bodyguards for a trip to the grocery store.
Yes, plaintext passwords are less secure, but they may be the result of business analysis regarding the costs associated with unauthorized access versus the costs associated with poor customer service when someone loses their password.
I was pretty shocked to be honest when I was told that this site used plain text. I didn't think anyone did that, but it is also a kind of blessing, since now we can merge the accounts exactly and keep the passwords.
I just would hate for the new users to think that we store plain texts.
Few options.
1) Transfer all the accounts from (old) site A to site B hash correctly then provide a one time URL that gets emailed and have them pick a new password immediately regardless.
2) Email them the plain text password and say here you go, but don't store plaintext.
3) Email something like this: Your password is knda*r (While trying to give some pseudo impression that you don't store the entire plaintext.
4) Transfer the accounts and don't tell them anything about their passwords, but point them to our forgotten password if they can't remember it.
Again, there may be a business case for doing so.
If my HN password is compromised, the consequences are relatively trivial. Therefore if HN spent a lot of time dealing with lost passwords, it might make economic sense to store them in plaintext.
If my Lloyds of London password is compromised, there are relatively significant consequences. Therefore, it should not be stored in plaintext.
In other words, ask your client about their needs and their operation and determine the appropriate way to store the password based on those things not your preconceptions.
EDIT: To address the original question, if I got a plaintext back from a web site I know it's bad, but I don't reuse passwords, so for me it is not the end of the world (assuming it's not my bank or something!) Hopefully this is generally true of more technical users.
My concern isn't so much about what to do in the future, because from here on out, we will only be using the hashed passwords...
I guess the original question could of been summarized to:
"Do you think that non-technical people realise that when they receive their passwords in an email that this is bad".
Because I would like to make the transition for the users as easy as possible. They will now be accessing and editing their details from the new site.
then users can login just as they would before and the transition would be transparent. and if they've forgotten their password they can use the recovery feature on your site which would generate a new one for them.