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?

    • @[email protected]
      link
      fedilink
      199 months ago

      What? The password should only receive the hashed password, and that’s gonna have a fixed length. What’s stored in the db should have the exact same length whether the password is 2 characters long or 300. If the length of the password is in any way a consideration for your database, you’ve royally fucked up long before you got to that point.

      • Sibbo
        link
        fedilink
        29 months ago

        You are expecting a lot from someone who thinks a password needs a low maximum length. It makes sense to limit password length to avoid dos attacks, but certainly to something longer than 16.

      • @[email protected]
        link
        fedilink
        18 months ago

        There are going to be very few hashing algorithms that can take a certain byte value and hash it down into a unique smaller byte value. If you miscoded the database and stored the hashed passwords into a value of a fixed length, you have to abide by that length without some trickery or cleaveriness. Is that not the case? Every time I’ve seen this limitation in wild code that has been the case.

        • @[email protected]
          link
          fedilink
          18 months ago

          That’s true. But fortunately even the most basic hashing algorithms are more than enough to make worrying about these things pointless when it comes to passwords. You have to poorly implement everything by hand and make a series of bad calls to run into any issues.

  • @[email protected]
    link
    fedilink
    399 months ago

    A prominent Australian bank has these requirements:

    For Internet Banking, your password must be six to eight characters long.

    To improve security, it should:

    contain both numbers and letters.
    include upper and lower-case letters (your password is case sensitive).

    • @[email protected]
      link
      fedilink
      English
      79 months ago

      8??? For banking? I haven’t used less than like 16 in at least 5, maybe 10 years. Jeez.

    • @[email protected]
      link
      fedilink
      English
      109 months ago

      8 character max means they’re running it on a mainframe I think, though I don’t know enough about mainframes to know if this is a normal level of bad or really bad

      • Rhaedas
        link
        fedilink
        79 months ago

        Could be (probably still is) running COBOL. It’s a combination of “if it works and costs money to upgrade, why change” but mostly “if we migrate one thing it will break five other things”.

  • @[email protected]
    link
    fedilink
    179 months ago

    I used to have to use a government-run website that required passwords to be exactly 8 characters

    • @[email protected]
      link
      fedilink
      48 months ago

      A lot of older systems I worked on had password requirement of exactly 7 characters, no special characters, no numbers and no upper case. Must have been interesting times in security when those systems were made.

    • @[email protected]
      link
      fedilink
      58 months ago

      How about a bank app that requires 6 numbers password (not the app PIN, but the user account’s password).

  • @[email protected]
    link
    fedilink
    English
    18 months ago

    Dammit, I just spent 5 minutes rolling dice and flipping through a binder. One of us takes this shit seriously.

  • @[email protected]
    link
    fedilink
    149 months ago

    How to properly set password requirements on your website. Accept any utf8 string. Have a nice day.

    • tiredofsametab
      link
      fedilink
      59 months ago

      It’s all fun and games until someone realizes they can just create lots of accounts with large passwords and fill your space.

      • Jade
        link
        fedilink
        249 months ago

        Not a problem because passwords are hashed, which means they take up a fixed size, and you should have form upload size limits anyway.

        • tiredofsametab
          link
          fedilink
          69 months ago

          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

          • @[email protected]
            link
            fedilink
            3
            edit-2
            8 months ago

            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.

            • tiredofsametab
              link
              fedilink
              39 months ago

              If you aren’t required to use an upload manager, are you really setting a solid password :thinking:

  • Joël de Bruijn
    link
    fedilink
    149 months ago

    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.

    • Fish [Indiana]
      link
      fedilink
      English
      6
      edit-2
      9 months ago

      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.

  • @[email protected]
    link
    fedilink
    1489 months ago

    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.

    • @[email protected]
      link
      fedilink
      4
      edit-2
      9 months ago

      “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.

        • @[email protected]
          link
          fedilink
          1
          edit-2
          8 months ago

          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.

            • @[email protected]
              link
              fedilink
              3
              edit-2
              8 months ago

              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.

      • @[email protected]
        link
        fedilink
        169 months ago

        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.

        • @[email protected]
          link
          fedilink
          39 months ago

          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.

          • @[email protected]
            link
            fedilink
            39 months ago

            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.

            • @[email protected]
              link
              fedilink
              2
              edit-2
              9 months ago

              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.

      • @[email protected]
        link
        fedilink
        79 months ago

        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.

    • @[email protected]OP
      link
      fedilink
      879 months ago

      Oh I had the same thought. Whoever limits password length probably has many other shitty security practices.

    • @[email protected]
      link
      fedilink
      209 months ago

      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.

        • @[email protected]
          link
          fedilink
          29 months ago

          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.

        • @[email protected]
          link
          fedilink
          129 months ago

          Sure but if my password is the entire lord of the rings trilogy as a string, hashing that would consume some resources

        • @[email protected]
          link
          fedilink
          59 months ago

          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.

          • @[email protected]
            link
            fedilink
            28 months ago

            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

            • @[email protected]
              link
              fedilink
              28 months ago

              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.

      • @[email protected]
        link
        fedilink
        19 months ago

        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

      • @[email protected]
        link
        fedilink
        18 months ago

        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

      • @[email protected]
        link
        fedilink
        169 months ago

        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.

    • @[email protected]
      link
      fedilink
      29 months ago

      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.

    • @[email protected]
      link
      fedilink
      English
      149 months ago

      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.

      • ddh
        link
        fedilink
        English
        2
        edit-2
        8 months ago

        Or accepts and silently truncates it 🤬

    • chameleon
      link
      fedilink
      109 months ago

      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.

      • @[email protected]
        link
        fedilink
        28 months ago

        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.

  • @[email protected]
    link
    fedilink
    328 months ago

    I got this from a bank. A BANK. Not only was it limited to 12 characters. THEY ALSO LIMITED THE SPECIAL CHARACTER SET.

    I complained and was told, oh that’s why we have the security number for (a unchanging six digit code), and I’m like, that’s basically 1 password with 18 character limit and 6 of the characters are definitely numbers.

    Not only that, 2FA is not available for logon, it just says “to authenticate certain types of Internet and Mobile Banking transactions”.

    I couldn’t believe it. Surprise, surprise, there are no minimum password security regulations in Australia…

  • @[email protected]
    link
    fedilink
    178 months ago

    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!

  • @[email protected]
    link
    fedilink
    248 months ago

    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…

  • @[email protected]
    link
    fedilink
    349 months ago

    worst i’ve seen is 8 characters. precisely 8 characters, no more no less… it was for a bank …

    • @[email protected]
      link
      fedilink
      39 months ago

      The fact that it was a power of 2 makes me suspect lazy coding. That bank didn’t pay its programmers well enough.

    • Dwemthy (he/him)
      link
      fedilink
      English
      169 months ago

      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

      • @[email protected]
        link
        fedilink
        128 months ago

        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.

        • @[email protected]
          link
          fedilink
          4
          edit-2
          8 months ago

          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.

  • @[email protected]
    link
    fedilink
    619 months ago

    I had to make an account the other day with the absolute worst password requirements I’ve ever seen:

      • @[email protected]
        link
        fedilink
        English
        109 months ago

        Yeah but the stakes are higher in Jersey you can get fined or even jail for messing up that password.

    • @[email protected]
      link
      fedilink
      39 months ago

      I am now even more relieved that the NJ courts have removed me permanently from jury duty, so my chances of interacting with that entire nonsense has gone down. A bit. Just a bit down.

      Now I just must try to not be taken to court or take one to court.

      This is where hiding inside might help.

    • @[email protected]
      link
      fedilink
      English
      48 months ago

      Ugh, I’m unfortunately even more bothered by the random extra spaces at the start of the first and last requirements than I am by the security horror.

  • @[email protected]
    link
    fedilink
    English
    279 months ago

    similarly:

    make a new account

    use password manager to generate a strong random password

    “your password must contain at least one special character (! @ # $ % ^ or &)”

        • @[email protected]
          link
          fedilink
          59 months ago

          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

      • @[email protected]
        link
        fedilink
        English
        68 months ago

        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.

          • @[email protected]
            link
            fedilink
            English
            18 months ago

            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.

            • subignition
              link
              fedilink
              18 months ago

              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.