My main problem with passwords is the limits that sites put on what I can set for a password.
I could not tell you how many times I reset my password using my password manager, then immediately log out, and log in using the credentials I just saved into my password manager, and they don't work, because the site is truncating the password to 15/20/whatever characters.
The number of times this limitation is not clearly stated, checked for, or even acknowledged by the site is too damn high.
I've made it a habit of testing a login after every password set/reset to ensure I don't have trouble with it in the future.
My password manager generates 32 character passwords composed of random alphanumeric characters by default. I usually don't modify it unless I hit a restriction, or its a site I'm particularly concerned about getting penetrated (in which case I increase the number of characters).
I don't mind sharing that because bluntly: anyone reading this, good luck figuring it out. The permutations is something along the lines of (26*2+10+(special characters))^32... Which is 3.5239... * 10^60... Otherwise known as 3.5 novemdecillion.
PlayStation Network has a limit of around 30 characters but they let you pick something longer. They even send you an email confirming that your password has been updated. But if you try to login with your new password it won't work.
I'll probably forget this within the next time I have to change it. I will then AGAIN try with 128 characters and then 125, 120, 115... while yelling at the emails they send me.
Common CSV parsers don't require it and I've seen plenty of examples of unquoted CSV cells (which, given there's no actual standard for the format, isn't too surprising). Hell I've created my fair share while throwing together ad hoc datasets. The idea that some of these dumps might be made by folks who are too careless to properly quote and escape their CSV data isn't hard to believe at all.
The CSV cells are escaped with quotes. So just maybe throw some quotes in too. Unbalanced for style points. It won't defeat a CSV library, but might break a script kiddie
My bank doesn't allow the characters you would need for a SQL injection in passwords.
Checked client side, I don't want to try and find out if it's also checked server side, but I hope it is.
No serious software would fall for such an easy attack anymore. With prepared statements it's impossible to break queries like that. Beside that one principle is to avoid using user inputs directly in your database.
The CSV specification (RFC-4180) is pretty clear. If a value contains commas, you wrap it in double quotes. If the value contains double quotes, you double each double quote to indicate its part of the value and not the end of the value.
A properly formatted CSV should have no problems from Skeletor!
There's no formal spec for CSV. The RFC you mentioned describes the most common behaviour observed in many implementations, but it's not a spec itself, as mentioned on the second page:
While there are various specifications and implementations for the
CSV format (for ex. [4], [5], [6] and [7]), there is no formal
specification in existence, which allows for a wide variety of
interpretations of CSV files. This section documents the format that
seems to be followed by most implementations:
Also, my understanding is that double quotes are only used for strings. Commas can appear outside of strings, for example in numbers in countries that use them as a decimal point. That's actually why many implementations use semicolons or tabs as the separator.
And there are plenty of bad systems, especially in this fail fast BS paradigm clueless idiots like to use. We know because they keep getting hacked (looking at you, lastpass!)
Sure, but the comic isn't talking about legit password usage systems. It's talking about how a comma could break the csv formatting of a csv file that came from a data breach and dump.
Ok, assuming that we're talking about, like you say, a system that gets a breach which is storing PWs in clear text/plain text, instead of hashing it, which is a big if as those kinds of systems are either amateur/homebrew, or extinct at this point, but I digress. Let's say it's there.
The attacker would run a sanitization script out of the SQL table that would shift those problem characters into proxy characters, or correct them if it's going to cause a problem. One or two passwords lost to correct for thousands isn't a big deal. The result of trying to put some sort of SQL Injection or CSV formatting bug into your password, hoping it was stored as plaintext, and the attacker wouldn't be sanitizing the common formatting issues, is just silly.
Plus, it's not like they're only exporting it once. They've usually copied the DB down locally, so they'll see the formatting is skewed when parsing the CSV, and correct it on the next export out.
I'm all for the humor here, I was just calling out that nothing about the ideas the OP suggested would work in real life SecOps scenarios.
Souce: Am engineer at large corporation. Deal with scenarios and systems like this all the time.
Edit: People are downvoting this, seemingly because they don't like that the answer makes the OP's joke less funny and pretty unlikely. This is why it's difficult and frustrating to have these kinds of conversations on Lemmy or reddit. I am an expert. I responded with additional information to correct some misunderstandings. It gets down voted because...?
The field of science and engineering that has the algorithms and libraries we would need to use to perform a proper one way encrypted hash, is going to be found in a cryoptographic library.
I suspect you're thinking of Crypto in how it's applied colloquially in the world today with a cryptographically signed linked-list ledger. There's a whole world of cryptography that's in use. Encryption is just one sub-function in that world.
While on the topic, this isn't how passwords work in systems.
Passwords are stored as one way hashes. So it's cryptoed only in one direction, it's lossy, and can't be recovered back to the original password.
When you log on, your cleartext PW is hashed in ephemeral memory/storage and then the cleartext password is thrown away.
That hash is compared to the hash in the DB. If the hash matches, then you have access. If it doesn't, then your PW is incorrect.
Oh my sweet Summer Child. This is definitely how it's supposed to work, but there are plenty of services that just don't know what the fuck they're doing.
Have you ever been on a site that has a stupid-low character limit for a password? There's literally no reason to do that, all the hashes are going to end up the same size in the DB anyway regardless of the original string length. Even bcrypt's max secret character limit is 70-something characters.
Ever change a password and have it not work on the next login because they're silently truncating it after a certain character limit? Ever get an email with an actual password in it?
The only reason you would do things like this is if you're storing/processing passwords in plaintext and not hashing it client-side first.
I can think of 3 offenders of this off the top of my head. It's a lot more common than you'd think.
\t is your best shot. For good measure, you'll also want to add double quotes (can be used to escape commas in CSVs), double double quotes, back slashes, and |s, just to mess with anyone trying to sanitize a CSV with your password in it.
Of course. In Windows you can hold Alt and type 0 0 9 before releasing the Alt key to enter the character without triggering any "move to next field" behaviour. In *nix it should be Ctrl+I.
Similar with other control characters - NUL (0) might be harder to type, yet substantially more likely to break things!
SHY is good if you'd like a character which can't be seen, without needing to resort to Unicode.
If you're a company, you should save your users' passwords as "hashes" which is like a scrambled up version, so if your data gets stolen the hackers will have to unscramble all the passwords which takes a long time. Some naughty companies don't do this and save their passwords as plain text. The person above is presumably talking to developers to remind them not to be naughty