Just take the string as bytes and hash it ffs

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

      I sort of get it. You don’t want to allow the entire work of Shakespeare in the text field, even if your database can handle it.

      16 characters is too low. I’d say a good upper limit would be 100, maybe 255 if you’re feeling generous.

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

        The problem is that you (hopefully) hash the passwords, so they all end up with the same length.

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

          At minimum you need to limit the request size to avoid DOS attacks and such. But obviously that would be a much larger limit than anyone would use for a password.

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

              I’d say 128 is understandable, but something like 256 or higher should be the limit. 64, however, is already bellow my default in bitwarden

        • Carighan Maconar
          link
          English
          -113 months ago

          And sure, in theory your hashing browser-side could break if you do that. Depending on how much text the user pastes in. But at that point, it’s no longer your problem but the browser’s. 🦹

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

            Why are you hasing in the browser?

            Also, what hashing algorithm would break with large input?

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

                Damm, I legit didn’t knew there bcrypt had a length limit! Thank you for another reason not to use bcrypt

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

                  Scrypt has the same limit, FWIW.

                  It doesn’t matter too much. It’s well past the point where fully random passwords are impossible to brute force in this universe. Even well conceived passphrases won’t get that long. If you’re really bothered by it, you can sha256 the input before feeding it to bcrypt/scrypt, but it doesn’t really matter.

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

                wouldn’t you then just break it up into chunks of 72 bytes, hash them individually, and concatenate the hashes? And if that’s still too long, split the hash into 72 byte chunks and repeat until it’s short enough?

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

                  I don’t know the specifics behind why the limit is 72 bytes, but that might be slightly tricky. My understanding of bcrypt is that it generates 2^salt different possible hashes for the same password, and when you want to test an input you have to hash the password 2^salt times to see if any match. So computation times would get very big if you’re combining hashes

            • @FierySpectre
              link
              English
              -3
              edit-2
              3 months ago

              Why would you not hash in the browser. Doing so makes sure the plaintext password never even gets to the server while still providing the same security.

              Edit: I seem to be getting downvoted… Bitwarden does exactly what I described above and I presume they know more than y’all in terms of security https://bitwarden.com/help/what-encryption-is-used/#pbkdf2

              • @candybrie
                link
                English
                19
                edit-2
                3 months ago

                Because then the hash is the password. Someone could just send the hash instead of trying to find a password that gets the correct hash. You can’t trust the client that much.

                You can hash the password on both sides to make it work; though I’m not sure why you’d want to. I’m not sure what attack never having the plain text password on the server would prevent. Maybe some protection for MITM with password reuse?

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

                Because then that means you don’t salt your hashes, or that you distribute your salt to the browser for the hash. That’s bad.

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

                  You could salt it. Distributing a unique salt doesn’t help attackers much. Salt is for preventing precomputing attacks against a whole database. Attacking one password hash when you know the salt is still infeasible.

                  It’s one of those things in security where there’s no particular reason to give your attacker information, but if you’ve otherwise done your job, it won’t be a big deal if they do.

                  You don’t hash in the browser because it doesn’t help anything.

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

                With comments like this all over public security forums, it’s no wonder we have so many password database cracks.

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

                Per your edit, you’re misunderstanding what Bitwarden does and why it’s different than normal web site password storage.

                Bitwarden is meant to not have any insight into your stored passwords what so ever. Bitwarden never needs to verify that the passwords you’ve stored match your input later on. The password you type into Bitwarden to unlock it is strictly for decrypting the database, and that only happens client side. Bitwarden itself never needs to even get the master password on the server side (except for initial setup, perhaps). It’d be a breach of trust and security if they did. Their system only needs to store encrypted passwords that are never decrypted or matched on their server.

                Typical website auth isn’t like that. They have to actually match your transmitted password against what’s in their database. If you transmitted the hashed password from the client and a bad actor on the server intercepted it, they could just send the hashed password and the server would match it as usual.

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

            If you hash in the browser it means you don’t salt your hash. You should absolutely salt your hash, not doing so makes your hashes very little better than plaintext.

            • Shadow
              link
              fedilink
              English
              5
              edit-2
              3 months ago

              There’s nothing stopping a browser from salting a hash. Salts don’t need to be kept secret, but it should be a new random salt per user.

            • Saik0
              link
              fedilink
              English
              13 months ago

              If you hash in the browser it means you don’t salt your hash. You should absolutely salt your hash, not doing so makes your hashes very little better than plaintext.

              That’s not true. If they send hashed password you could salt/hash again on server if you’re trying to keep the salt “secret”. Their hash should always be the same if they’ve submitted the same password. You’d just be hashing a hash in that case… but it’s the same premise.

      • Chris
        link
        fedilink
        English
        243 months ago

        The eBay password limit is 256 characters.

        They made the mistake of mentioning this when I went to change my password.

        Guess how many characters my eBay password has?

            • Farid
              link
              fedilink
              English
              12 months ago

              I’m not sure what you’re implying with this. But how did you dig this up anyway?

                • Farid
                  link
                  fedilink
                  English
                  22 months ago

                  Oh you mean that the number 256 overflows into 0 in 8-bit range. My joke was leaning more into the idea that when you use all 256 possible bit combinations (1111 1111), it can represent -1 in signed integer formats. Even though 255 is the highest number you can directly represent, there are still 256 total combinations, including zero, so IMO, the joke works.

        • N3Cr0
          link
          English
          113 months ago

          Just paste it in here and I count the characters for you.

      • Saik0
        link
        fedilink
        English
        173 months ago

        I sort of get it. You don’t want to allow the entire work of Shakespeare in the text field, even if your database can handle it.

        You don’t store the original text. You store the hash of it. If you SHA512 it, anything that’s ever given in the password field will always be 64Bytes.

        The only “legit” reason to restrict input to 16 character is if you’re using an encryption mechanism that just doesn’t support more characters as an input. However, if that’s the case, that’s a site I wouldn’t want to use to begin with if at all possible.

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

          The resulting hash will always be the same size, but you don’t want to have an unlimited upper bound otherwise I’m using a 25GB blueray rip as my password and your service is going to have to calculate the hash of that whenever I login.

          Sensible upper bounds are a must to provide a reliable service not open to DDOS exploits.

          • Saik0
            link
            fedilink
            English
            1
            edit-2
            3 months ago

            Sensible upper bounds are a must to provide a reliable service not open to DDOS exploits.

            If I choose to make you hash it in browser first… Then I simply don’t care do I? I can hash/salt again when I get your hash. Edit: There are other answers to the “DDOS problem” that don’t require upper bounds.

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

              You can make a client hash it, but if you don’t reject large inputs to your API a client can send enough data to DOS you anyway.

              • Saik0
                link
                fedilink
                English
                13 months ago

                And a meteor can hit my server the exact time you send your hash which will DOS you/others as well. What’s your point.

                The thread is talking about what it takes to store passwords. There is not DOS potential in a well designed system. Just because you want to arbitrarily conjure up bullshit doesn’t make that any less true.

                Rejecting large inputs != disallowing users to have large passwords. Why are you attempting to straw-man me here?

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

                  You were saying the input size doesn’t matter because you only store the hash which is always the same size. What I’m saying is that the input size really does matter.

                  You absolutely should set upper limits on all input fields because it will be abused if you don’t. Systems should validate their inputs, passwords included

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

          I’ll admit I kind of typed this without thinking it through. In a secured site, the password would be hashed and salted before storing in the database.

          Depending on where you’re doing the hashing, long strings might still slow you down. That being said, from a security standpoint, any gain in entropy by adding characters would be negligible past a certain point. I don’t remember what that number is but it certainly isn’t in the thousands.

          • Saik0
            link
            fedilink
            English
            13 months ago

            That being said, from a security standpoint, any gain in entropy by adding characters would be negligible past a certain point.

            That would be completely based on the hash being used. In the example above I showed SHA512 which is 64Bytes. If we’re using ASCII (7 bit per character) as our input then 64 Bytes is just over 73(73.1428…) characters. After that you’re losing data in the hashing process and by that effect it would be negligible… (There’s some wiggle room here in that we can’t type hidden ASCII characters so some passwords over 73 characters would fill those spaces… but detecting collisions is silly and non-trivial… better to just not worry about those at all.)

            Extended ASCII would be same premise, just 64 characters instead of 73.

            The reality is that nobody is using much more than 64 Bytes for their hashing algorithm for passwords… 64 characters is a good number to max out most of them. Databases don’t need to store much at all regardless of the length of your actual password. If you’re developing an app you can set the database to limit based on the algorithms you’re using. If you have no idea what the web-dev will actually use… then 128 characters on the database field is probably pretty safe (88 I think if storing as Base64, 128 if storing in Hex. Could be off by one here.) and literally trivial to store. The point being that even if every one of your users submitted 10000 character long passwords… that’s irrelevant and trivial for storage as hashes.

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

              There’s a more practical limit. Using US standard keyboard symbols, a 40 char password is about as secure as a 256-bit block cipher key. That’s impossible to break due to thermodynamic limits on computing.

              The reason to put a high char limit is to mitigate DoS attacks. It can still be a few hundred chars.

          • Rain World: Slugcat Game
            link
            English
            02 months ago

            you might compare 1,000 to 10,000, but more like 0.1% to 0.01%
            meaning of this? no. bad grammar.

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

        Even 255 bytes with 10 million entries is only ~2.6GB of data you need to store, and if you have 10 million users the probably $1 a month extra that would cost is perfectly fine.

        I suppose there may be a performance impact too since you have to read more data to check the hash, but servers are so fast now it doesn’t seem like that would be significant unless your backend was poorly made.

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

      Oh and also, “change this every four weeks please.”

      Okay then. NEW PASSWORD: pa$$word_Aug24

      • @CaptPretentious
        link
        English
        43 months ago

        Yep. Having to have requirements that doesn’t flow with people very well and requiring constant updates, people WILL find shortcuts. In the office, I’ve seen sheets of paper with the password written down, I’ve seen sticky notes, I’ve seen people put them in notepad/word so they could just copy paste.

        This is made worse, because you have to go out of your way for a password manager, which means you need to know what that is. And you need a good one because there has been (and I’m going to generalize here) problems with some password managers in the past. And for work, they have to allow a password manager for that to even be an option. Which you then end up with this security theater.

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

          And you need a good one because there has been problems with some password managers in the past.

          coughLastPasscough

          “Problems”. What an delightfully understated term to use.

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

        the password cannot contains the same sequences of characters as the old password.

        and i have seen this requirement in a service that requires changing it every month for some reasons.

        and this is to manage a government digital identity that allows to log it in all governments websites.

        • @PM_me_your_doggo
          link
          English
          1
          edit-2
          3 months ago

          the password cannot contains the same sequences of characters as the old password.

          That’s a weird way to say “we store your password in plaintext”

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

            Not necessarily. Presumably the change password form requires entering the old and new password at the same time. Then they can compare the two as plain text and hash the old password to make sure it matches, then if so, hash the new password and overwrite it. Passwords stored hashed, comparison only during the change process. A theme on this is checking password complexity rules during the login process and advising to update to something more secure. It’s possible because you’re sending the password as plain text (hopefully over a secure connection), so it can be analysed before computing the hash. This even works if the hash is salt and peppered.

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

      Reasonable upper limits are OK. But FFS, the limit should be enough to have a passphrase with 4 or 5 words in it.

      • aname
        link
        fedilink
        English
        63 months ago

        Usually 256 bit hash is used. 256 bits is 32 bytes or 32 characters. Of course you are losing some entropy because character set is limited, but 32 characters is beyond reasonable anyway.

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

          The eff passphrase generator has about 2.5 bits of entropy per character (without word separators). Eff recommends 6 word passphrases, and with an avg word length of 7, that’s (only) 79.45 bits of entropy that won’t even fit in the 32 characters. If there wasn’t a password length limit it would be possible to saturate the hash entropy with a 20+ word & 102+ char passphrase.

          • aname
            link
            fedilink
            English
            13 months ago

            Of course, but that’s because you are using a passphrases. Passwords have a much hogher entropy.

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

          I’d be totally fine woth 32 characters! But I’ve come across too many websites with unreasonably short (20 characters or less) limits.

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

      Just opened a PayPal account and their limit is 20. Plus the only 2fa option is sms 🙃.

        • ZeldaFreak
          link
          English
          53 months ago

          Probably people would struggle to scan the QR Code with their smartphone. I think most apps can scan it from a image but obviously this would be unsafe, especially when people sync their screenshot to the cloud.

          I can 100% confirm totp exist for PayPal, because I’m using it.

      • Queue
        link
        fedilink
        English
        1
        edit-2
        3 months ago

        I personally have a Yubikey and OTP for mine. Maybe they don’t for your country?

        That said, fuck PayPal.

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

      Especially since it takes more effort to limit it than leave it wide open for whatever length of password a user wants to use.

      nvarchar(max) is perfect to store the hashed copy.

  • @Eiri
    link
    English
    543 months ago

    You remind me of my bank about 17 years ago. Everyone had to have a 10-character password, exactly, and it had to include exactly 2 numbers and 1 symbol. I wasn’t very knowledgeable about computers at the time and it already felt dumb.

    • @Wogi
      link
      English
      363 months ago

      A few years ago my ISP pushed an update to my router that changed the password requirements, invalidating my passwords. Because I couldn’t enter the old password I also couldn’t change the password. I had to do a factory reset.

      • JackbyDev
        link
        fedilink
        English
        203 months ago

        Feels odd to check the password requirements on the enter password screen in addition to the new password screen.

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

          Might be checking the old password on the new password screen. Easy programming mistake to make I guess? Apply the same validation to all 3 password fields…

          • JackbyDev
            link
            fedilink
            English
            23 months ago

            Ahhh, good catch! You are probably a master of code reviews and QA!

      • @Eiri
        link
        English
        53 months ago

        Wow that’s a big oops

      • @Glitterbomb
        link
        English
        23 months ago

        ISP worker here. Our chosen routers default to an 8 digit password, the first 4 are the last 4 of the mac in hex, which anyone can easily see being broadcast by the wifi network. The last 4 are a part of a unique serial number, but its just 0-9. Ultimately, if you try to brute force this default password, you need 10000 tries. It takes a regular GPU 2 minutes with hashcat. It baffles my mind that companies think this is OK.

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

      17 years ago, jeez. My credit Union’s website is like that. Only its between 8-12 characters. No more, no less.

      It’s terrifying.

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

      At that time my bank allowed up to 6 digits as a password. I kid you not, like a card PIN but for online banking login. I believe the whole banking security relies on their backoffices still running on paper.

      • @Eiri
        link
        English
        43 months ago

        That’s what my current bank uses for the web portal now to think of it. Client number, and 6-number PIN. I guess they’re only doing this because they really trust their “unusual activity” protocols, but I’ve got a feeling they really shouldn’t only rely on those.

    • Victoria
      link
      fedilink
      English
      123 months ago

      german programmers trying to translate Unterstrich

    • @yamanii
      link
      English
      2
      edit-2
      3 months ago

      Those cases where an english word gets absorbed even though no one from the origin talks like that. It’s also informally called underline here in Brazil lol.

  • @guy_threepwood
    link
    English
    313 months ago

    I had one of those “fancy” Vodafone routers included with my broadband which had a stupid rule set on choosing the WiFi password. It’s my network, not yours, stupid router. It can be as insecure as I want.

    Anyway the rules were enforced by the JavaScript so it was easy to bypass until I got my own router to replace it with.

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

      It’s important to note, that these things are designed for the average user. If you want to change the wifi password, you are by far not an average user. Most users just plugs in and never even think about that, and the number of that kind of users are several order of magnitude higher than the conscious ones. For them it’s much more secure to set a random pw. If you let them select a password they will choose 12345 or password.

      If you know what you are doing usually it’s better to buy your own router where you can change everything the way you like.

      • JackbyDev
        link
        fedilink
        English
        33 months ago

        If we could magically get the data I’d be willing to bet at least half of everyone thinks they can’t change their router password.

  • Possibly linux
    link
    fedilink
    English
    153 months ago

    Create a randomly generated password and store it in a password manager

  • Machefi
    link
    fedilink
    English
    153 months ago

    Assuming we can use both lower- and uppercase letters (52 in total), with the ten digits and the underscore that gives us 63 characters to work with. A random 16-character combination of these gives us 95 bits of entropy (rounding down), which is secure enough by modern standards, at least for a home router.

    Regardless, I understand the frustration of arbitrary limitations preventing you from choosing a secure password in a way that you’re comfortable with.

  • Emerald
    link
    fedilink
    English
    103 months ago

    I hate that kind of stuff, when I see this I wonder if they hash the password at all

    • qazOP
      link
      English
      13 months ago

      deleted by creator

  • Blaster M
    link
    English
    93 months ago

    TP-Link… TP-Link…

    I don’t trust your bottom barrel software, TP-Link…

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

      True trash-tier software and hardware. Last year I was having trouble with frequently dropped packets from my office computer. I thought it was a Spectrum issue until I tore everything out and started testing all my ports (modem, router, wall ports, etc). I FINALLY narrowed it down to the relatively new TP-Link dumb router I bought. I threw that piece of trash in the garbage.

      Never again.

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

    16 characters was the minimum length a password should be due to how easy it was to crack… something like a decade ago.

    Now it’s something like 20 to 24 characters.

    Seriously, if your company is defining maximum password length and demanding specific content, it is failing at the security game. Have the storage location accept a hashed UTF-8 string of at least 4096 bytes - or nvarchar(max) if it’s a database field - and do a bitwise complexity calculation on the raw password as your only “minimum value” requirement.

    Look at how KeePass calculates password complexity, and replicate that for whatever interface you are using. Ensure that it is reasonable, such as 150-200bit complexity, and let users choose whatever they want to achieve that complexity.