Whenever I see something like this I just laugh because you're exactly right. Something isn't being handled properly and their dev team just proved they don't know how to do some basic handling. Every API library in JS and restful API I know of handle special characters. If they wanted they could base64 encode it over the wire. Then you're exactly right, if the database "can't handle it" more than likely it's a home spun database connection where they're serializing it themselves (which even then this is solvable), but even then that proves that they make poor choices.
This is like when I was in my twenties working at a crappy grocery store with a MoneyGram inside of it. I live in Washington state, and at the time, if your last name was less than five characters, you would have asterisk's in your license number. The MoneyGram system wanted people's license numbers but was unable to recognize a license with an asterisk. It happened pretty rarely, but it always happened to people whose last names were four characters or less long. Five letters in your last name and you were gold. To make the transactions happen, I would just do the whole license number minus the asterisk.
Anyway, Washington changed how it generates license numbers so its a moot point anyway but I don't think MoneyGram ever spent a dime to fix this since it only affected a small number of people in one US state.
Sometimes I wonder if I'm even fit for employment as a developer and then I see shit like this where I wonder who and what happened for this to even become an option?
Seems to be they're dropping the passwords in the database in plain text, but they're deathly afraid that someone will drop a '; in there or something and the insert will break.
Notwithstanding that storing passwords in plain text is a slapping with the 10 foot rubber chicken, but mysqli_real_escape_string() or any number of other similar solutions are indeed a thing that exists. A prepared statement would work, too.
Which is ridiculous because it's going to hash down to the same character set. There's no way they're storing your password with special characters unhashed, right?
They'll accept it, but won't tell you they ignored everything after character n, and their login page won't take anything but the "correct" password so you'll be spending some time figuring out the actual character count limit...
Some months back, there was a thread here on Lemmy where people were discussing western names written using Chinese characters. Phonetically, the names will sound alike. But meaning-wise, the characters will result in a Correct Horse Battery Staple-esque string of words.
Which is why I have since decided to make passwords by typing random names into a Chinese name generator and using the English translated result.
Sounds like a lot of work, but the way I see it, trying to think of new passwords is always work so I might as well have fun with it.
64 characters picked at random in [a-zA-Z0-9_] is perfectly fine if password is your only option. Special character do not increase significantly the difficulty of bruteforcing it, but introduce the risk of having to manually type "}à.å÷Â!!ç-×ô@¸Á¢±ãÕß>>úÓ}¼º¤«<_`àÅû§Æ]*ÂñçÌÿ§à®&ܱ=Ú-´ð¹é$.>=;Ö if something goes catastrophically wrong.
It can be. Or it can be someone that had to deal with users (or was trained about it) and is limiting the chances of a user being kept out because they type something that looks like their password but isn't, and then have to go to support.
It's actually nice they have underscore. 😀
Yes because if you choose 8 characters at random, with 25 small + 25 big letters and 10 numeric, it* only 60^8
= 167,961,600,000,000 combinations.
I think the problem is more if the system allows brute force with thousands of erroneous attempts.
Then statistically any hacker can attempt several accounts, and ultimately get lucky. But by all means, put the responsibility to the user, users are the experts right!?
I never got the frantic excessive entropy mindset, when the problem is much simpler to not allow crackers endless attempts. You can allow 50 attempts, and chances would be very slim to guess even pretty moronic passwords.
What's even worse is when they REQUIRE big and small and numbers to maximize entropy, they actually make statistically FEWER attempts necessary to brute force it.
A standard Microsoft introduced in the 90's, and FUCKING almost everybody is using, despite it's a 100% moronic requirement.
Instead just warn against passwords that can be guessed by logic, or can be found in a dictionary.
Most websites don't allow multiple failed logins and, even if they did, the network latency alone would make brute force attacks useless. The point of having a high entropy password is to protect against hackers brute forcing a leaked database of hashes. Having different passwords for every website also protects against this so, as usual, the answer is "just use a password manager".
I will never do that, I have a system instead. I never understood why people would want to use a password manager. To me it seems it ads an attack vector, where you could lose EVERYTHING!
I hate these arbitrary limitations of 16 characters, 25 is unbreakable and some sites won't allow longer than 16 20, I've even had one site not allow over 6.