Last week, I tried to register for a service and was really surprised by a password limit of 16 characters. Why on earth yould you impose such strict limits? Never heard of correct horse battery staple?
No need to escape, if the table name for
; drop table ... --
doesn’t fit 😉This one time I got this catch22 situation with a service… Turned out password reset in the Android app accepted 32 characters but in the browser less.
Happened to me a couple days ago when resetting a password for Paypal. The browser limit was 20 characters for the 2nd password box but had a higher limit for the first password box.
Though, it appears they recently modified the form to pop up with an “Enter a shorter password” message. With that being said, PayPal has apparently always had shitty password policies.
ADD FIELD PASSWORD VARCHAR(16)
sqlquery = "INSERT INTO users (username, password) VALUES ('" + username + "', '" + password + "')"
What could go wrong?
Password=a");drop table users;–
Alas, it’s longer than 16 characters. Protection works!
They often don’t allow semicolons but it’s never stopped me from checking
deleted by creator
Christopher Null feels his pain.
SELECT * FROM users WHERE name = "$name" OR password = "$password"
Eons ago, I got an account for using a software on an IBM mainframe. Keep in mind that the machine used masks with fixed-width text fields on the terminal (TN3270, IIRC), even for the login mask. Being security cautious, the first thing I did after login was to change my password. The “change password” mask allowed for passwords of up to 12 characters, which I used freely. I logged out, got back to the login mask - which only allowed for an eight character password…
Drives me nuts when this happens.
worst i’ve seen is 8 characters. precisely 8 characters, no more no less… it was for a bank …
No no, not 8 characters, 8 numerical characters!
Whoa whoa whoa, did you use two of the same number in a row? Insecure!
Is that a sequence? No way, José!
Numerical Chateaubriand*, and total sum must be less than 3.
* okay Google, if that’s what you really think I meant to type.
I had to make a 10 character password for Santander
A major US bank that I used to use has case insensitive passwords, found that out one day when I noticed caps lock was on after logging in with no trouble
Makes you wonder if they store the password in plain text, or convert to lower key during your first input so it’s at least hashed. I wouldn’t be surprised if it’s not.
I don’t think it could be hashed if it is case insensitive. It’s fairly early so I may be misremembering but I’m not aware of any hashing algo that ignores case.
Edit: Ah, actually they could be storing the password as a hash, but they would probably have to do like a
password. ToLower()
call or something where they morphed the string before checking… The thought of which just makes me shudder.they store the passwords as filenames on a windows system
Put a colon in your password and crash the whole system
set your password as
GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}
for infinite money glitch
Ha. I had the same thing, with a government-run student loan website
Early 2000s internet banking was a trip.
i think this was about a year ago when they changed it…
The fact that it was a power of 2 makes me suspect lazy coding. That bank didn’t pay its programmers well enough.
Banks don’t have much money for paying people, methinks. They’re famously poor practically non-profits.
maybe they store the entire password as a u64 and bitmask out each character
similarly:
make a new account
use password manager to generate a strong random password
“your password must contain at least one special character (! @ # $ % ^ or &)”
but not 2! and not THAT special character! and…
“Ope, sorry, that password is already in use by [email protected]. Please choose a different one!”
OOPS we think this password is too long for you to remember, try again! and change it again in a month. your best buy account that we forced you create and are going to have a data breach on in about fifteen minutes is VERY IMPORTANT AND MUST BE SECURE
I would thank you to quit publishing my email address in public forums for no reason.
I just reset my password with Southwest Airlines today. They had both the stupid 16 character limit and the stupid list of permitted special characters. But they also had the perplexing criterion that the first character of the password specifically couldn’t be one of those permitted special characters.
Literally why.
Poor input sanitization probably.
I’m not saying it was a soft rule where the form refused to validate my input. It was an actual, fully-described rule in the bulleted list among the other rules. For whatever reason they specifically went out of their way to enforce it. And I cannot fathom why they would.
I understood what you meant, it doesn’t change my answer though
The back-end environment could have at least a few ways to screw things up if, for example, they were passing the password thru a shell script to hash it and had poor sanitization of the input
!, #, and $ can be particular troublemakers at the start of a string, there’s probably more I’m not aware of too.
when CEOs make security policy.
I hate that, why can’t I use something like £ or Ł?
Your password must contain at least one swear word.
My favorite was “Your password must begin with a letter”
“Otherwise our database may misinterpret it as a number when we store it in pain text”
pain text
Accidentally accurate
How to properly set password requirements on your website. Accept any utf8 string. Have a nice day.
It’s all fun and games until someone realizes they can just create lots of accounts with large passwords and fill your space.
Not a problem because passwords are hashed, which means they take up a fixed size, and you should have form upload size limits anyway.
hashed, which means they take up a fixed size
One would hope so anyway,
you should have form upload size limits
The above conflicts directly with OP’s
Accept any utf8 string
I opened an account in 2014 and I’m still uploading my password.
If you aren’t required to use an upload manager, are you really setting a solid password :thinking:
Can’t trust an upload manager not to be hacked. I employ a team of typists in India.
Ok. Take up to 65,536 bytes of utf8 string. Or better yet. Accept any password length. I mean any. But instead of transmitting it you bcyrpt on their machine and then use the resulting key to hmac sign a recent timestamp that can’t be reused.
Fuck this! My bank has this, and not just that, the limit is 6 digits, that’s right, only digits and only 6 of them.
My balance is harder to guess than my password (if you include cents)
Fuck!
Use a different bank.
All of them do this where I’m based. 4 to 6 digits is common.
Online bank an option?
I’m talking about online banks. Not even worth engaging with the others.
Ran into this when I chose a password for my new work e-mail. As my employer is Chinese, error messages show up in mandarin, so it took me a while to understand what the problem was: Must be between 9 and 16 characters long.
Its even better when they don’t tell you that your password is too long, and they truncate it somewhere unknown.
Tried a randomgen 32 character password at the local sheriff’s office. Copy and pasted it directly out of my password manager into the password creation field so I know I didn’t typo it and when I tried to login it wouldn’t work. Took me a bit of troubleshooting to figure out what happened.
Oh that’s evil.
Ive seen an account creation or password reset that let’s you do any length password, but the actual login page has a character limit.
That happens all the fucking time, and it’s infuriating. Most recent example was with Kagi, which I eventually found out had a max of 72, truncated, no warning. I bitched out their support and they were like ‘nbd, and it should have warned you’ and I’m like ‘nope, no warning at all’ which means they didn’t bother checking if a warning actually showed or prevented the input, just ‘I wrote it so we must be good’.
They claim to have fixed this, but ugh. Took me a half an hour, and I started with the suspicion that it was being truncated. Test your shit if you’re going to be stupid, people.
Bcrypt and scrypt have a limit of 72 chars, so it’s probably that. Implementations can work around it by putting the password through a pre-hash, but most don’t bother. There are tons of reasonably secure password storage systems with that limit.
What are the benefits of a password greater than 72 characters? How high do you try to go?
The longer it is, the harder for anyone to guess, write down, remember, or brute force. For that long a password, someone can actually see my password and then have effectively zero chance of being able to use it.
But maybe it’s more a ”why not?” In one side it’s generated so you can use it equally well, and in the other side it should be hashed to a standard length so they should be able to manage it equally well.
When I did the math with a reasonable list of alphanums and symbols on a US standard keyboard, a 40 char randomly generated password had equivalent security to a 256 but block cipher key. Describing the difficulty in brute forcing that starts with the phrase “assume you can convert all the energy from a supernova at 100% efficiency into a thermodynamiclly perfect computer”. A roundabout way of saying impossible.
40 chars random is already overkill.
About 10 years ago this happened to me at chase.com. IIRC they truncated at 30 characters at the time.
This is my biggest pet peeve. Password policies are largely mired in inaccurate conventional wisdom, even though we have good guidance docs from NIST on this.
Frustrating poor policy configs aside, this max length is a huge red flag, basically they are admitting that they store your password in plan text and aren’t hashing like they should be.
If a company tells you your password has a maximum length, they are untrustable with anything important.
If a company tells you your password has a maximumn length, they are untrustable with anything important.
I would add if they require a short “maximum length.” There’s no reason to allow someone to use the entirety of Moby Dick as their password, so a reasonable limit can be set. That’s not 16 characters, but you probably don’t need to accept more than 1024 anyway.
you probably don’t need to accept more than 1024 anyway.
OWASP recommends allowing at least 64 characters. That would cover all of my passphrases, including the ones that are entire sentences
I wonder if a lot of it is someone using their personal experience and saying “just a little bigger ought to cover it”
When I used my own passwords, I rarely used more than 12 characters, so that should be enough
All the password generators I’ve used default to about 24 chars, so 30 ought to be enough for anyone
Why not? You’re hashing it anyways, right?
Right?!
Bcrypt and scrypt functionally truncate it to 72 chars.
There’s bandwidth and ram reasons to put some kind of upper limit. 1024 is already kinda silly.
Of course, but if you’re paying for network and processing costs you might as well cap it at something secure and reasonable. No sense in leaving that unbounded when there’s no benefit over a lengthy cap and there are potentially drawbacks from someone seeing if they can use the entirety of Wikipedia as their password.
You can also hash it on the client-side, then the server-side network and processing costs are fixed because every password will be transmitted using same number of bytes
You still need to deal with that on the server. The client you build and provide could just truncate the input, but end users can pick their clients so the problem still remains.
The server can just reject any password hash it receives which isn’t exactly hash-sized.
That would take care of it, you do nead to salt & hash it again server side ofc.
Sure but if my password is the entire lord of the rings trilogy as a string, hashing that would consume some resources
I think there are other problems before that 😂
True!
also, if they think a strong password is only about types of characters. a dozen words from as many languages and 5+alphabets is just as good!
its to the point I don’t bother remembering my passwords anymore, because this bullshit makes user-memorable-hard-to-machine-guess passwords impossible.
I am now very concerned about a certain medical implant device company
“If a company tells you your password has a maximum length…”
Uhhh no. Not at all. What so ever. Period. Many have a limit for technical reasons because hashing passwords expands their character count greatly. Many websites store their passwords in specific database columns that themselves have a limit that the hashing algorithm quickly expands passwords out to.
If you plan your DB schema with a column limit in mind for fast processing, some limits produce effectively shorter password limits than you might expect. EVERYONE has column limits at least to prevent attacks via huge passwords, so a limit on a password can be a good sign they’re doing things correctly and aren’t going to be DDOS’d via login calls that can easily crush CPUs of nonspecialized servers.
Why not just store the first X characters of the hashed password?
The hash isn’t at all secure when you do that, but don’t worry too much about it. GP’s thinking about how things work is laughably bad and can’t be buried in enough downvotes.
Where can I read more about how it’s not secure?
The Wikipedia article is probably a good place to start: https://en.wikipedia.org/wiki/Cryptographic_hash_function
Though I’d say this isn’t something you read directly, but rather understand by going through cryptographic security as a whole.
To keep it short, cryptographic hashes make a few guarantees. A single bit change in the input will cause a drastic change in the output. Due to the birthday problem, the length needs to be double the length of a block cipher key to provide equivalent security. And a few others. When you chop it down, you potentially undermine all the security guarantees that academics worked very hard to analyze.
Even a small change would require going to a lot of work to make sure you didn’t break something. And when you’ve read up on cryptography in general and understand it, this tends to be an automatic reflex.
None of which really matters. GP’s big assumption is that the hash size grows with input size, which is not true. Hash size stays fixed no matter the input.
It doesn’t matter the input size, it hashes down to the same length. It does increase the CPU time, but not the storage space. If the hashing is done on the client side (pre-transmission), then the server has no extra cost.
For example, the hash of a Linux ISO isn’t 10 pages long. If you SHA-256 something, it always results in 256 bits of output.
On the other hand, base 64-ing something does get longer as the input grows.
Hashing on the client side is as secure as not hashing at all, an attacker can just send the hashes, since they control the client code.
Hashing is more about obscuring the password if the database gets compromised. I guess they could send 2^256 or 2^512 passwords guesses, but at that point you probably have bigger issues.
It’s more about when a database gets leaked. They then don’t even have to put in the effort of trying to match hashes to passwords. And that’s what hashing a password protects against, when done correctly.
Then you can salt+hash it again on the server.
Can you not simply have a hashing algorithm that results in a fixed length hash?
That would be all of them, yes.
Just in case someone runs across this and doesn’t notice the downvotes, the parent post is full of inaccuracies and bad assumptions. Don’t base anything on it.
The number of government websites that I’ve encountered with this “limitation.” Even more frustrating when it’s not described upfront in the parameters or just results in an uncaught error that reloads the page with no error message.
Or accepts and silently truncates it 🤬
Oh I had the same thought. Whoever limits password length probably has many other shitty security practices.
bcrypt has a maximum password length of 56 to 72 bytes and while it’s not today’s preferred algo for new stuff, it’s still completely fine and widely used.
Wait, really? I always thought bcrypt was just a general-purpose hash algorithm, never realized that it had an upper data size limit like that.
If a company tells you your password has a maximum length, they are untrustable with anything important.
Lemmy-UI has a password limit of 60 characters. Does that make it untrustworthy?
OWASP recommendation is to allow 64 chars at least:
Maximum password length should be at least 64 characters to allow passphrases (NIST SP800-63B). Note that certain implementations of hashing algorithms may cause long password denial of service.
The lemmy-UI limit is reasonably close and as everything is open source, we can verifiy that it does hash the password before storing it in the database.
There is a github issue, too.
It being open source helps because we can confirm it’s not being mishandled, but it’s generally arbitrary to enforce password max lengths beyond avoiding malicious bandwidth or compute usage in extreme cases.
Here is a screenshot from the page where my meme came from. But it it not the only company out there with ridiculous password policies.
Tell me about it. USAA has a password policy of “between 8 and 12 characters.”
Like, that’s not even secure under old understandings of secure. A max of 12 should be, like, an actual offense with sanctions attached if they get hacked at some point. Especially for a financial institution. Ridiculous.
Definitely used a one-off password for that one…
I have to change my USAA password every few months because I forget about the 12 character restriction…
12characters
is 12 characters long
Wow that’s true, what a crock.
USAA strikes me as the most Wonder bread Texas Aw Shucks company that smiles to your face while outsourcing as much as possible (and stabbing you in the back in the process). Case in point. USAA only allows TOTP through Symantec’s proprietary app. I’m moving everything away from them except for auto insurance (which will likely go away at some point too as they’re not really that valuable for that anymore either).
Huh? I have had a USAA account for many years and my current password is far beyond 12 characters. I use both the website and the app…
Weird. I had to make up a new one cause all my normal passwords were too long.
Several people on here have had the same issue it seems, and Google agrees thats their limit is 12.
Not sure how you got around it. Maybe you’re using a USAA reseller or something? You sure that your password’s more than 12 characters?
Nope, direct account with USAA. I wonder if the way the user/pass is entered into the field, that it doesn’t trip the check for length? I don’t manually copy/paste, and also use autofill for initial setup/changing credentials. I’ve seen it before on other websites but it usually truncates on the login auth and yells at me.
…
I just tried it, actually - sonofabitch. It (the change password flow) took the password via pw mgr, (apparently) truncated it, accepted it; this was a while ago but I remember the process. Just now, the login flow takes my username, password, truncates it (50+ chars, 13, or 12, doesn’t matter), accepts it. 11 chars throws an ‘incorrect login’ message, so I don’t have a borked account. At no point has it ever complained about password length. Jesus christ.
Absolutely beautiful. What a company, lol.
The real beauty of it is that I can’t fathom the logic. Unless they’re storing the passwords as plaintext, it’s not like it can be a storage issue. The hashes will be a constant size. I guess it takes longer to hash bigger inputs, but like, that difference should be unnoticeable until thousands of characters.
Did the engineer who made it truly not fathom that people might have passwords longer than 12 characters? That’s the kind of mid-90s logic that makes me genuinely worry that the passwords aren’t hashed on the backend, or are just MD5’d or something…
Makes absolutely no sense at all.