As bad as it is, I can understand accidentally leaving a database accessible (they generally need to be accessible and setting just the right amount of accessible can be complex). But this: > ...plaintext passwords... Why, oh why, store plaintext passwords?!?
I can sort of see why and it's for the same reason databases are left wide open. You start a project. You set up a DB with minimal security because you're just starting the project, and you figure that down the road before you release to the public, you will secure that DB. A few weeks/months pass and you are ready to release your app into the wild. But by that time you are focused on other things and that unsecured…
* identify a hashing library * install/import it * call it (when storing the password and when comparing)
It’s a matter of minutes really.