Just take the string as bytes and hash it ffs

  • CosmicTurtle0@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    59
    arrow-down
    10
    ·
    24 days 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.

    • owsei@programming.dev
      link
      fedilink
      English
      arrow-up
      77
      arrow-down
      2
      ·
      24 days ago

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

      • expr@programming.dev
        link
        fedilink
        English
        arrow-up
        49
        ·
        24 days 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.

      • Carighan Maconar@lemmy.world
        link
        fedilink
        English
        arrow-up
        5
        arrow-down
        15
        ·
        24 days 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. 🦹

        • owsei@programming.dev
          link
          fedilink
          English
          arrow-up
          18
          ·
          24 days ago

          Why are you hasing in the browser?

          Also, what hashing algorithm would break with large input?

            • owsei@programming.dev
              link
              fedilink
              English
              arrow-up
              3
              arrow-down
              1
              ·
              24 days ago

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

            • Swedneck@discuss.tchncs.de
              link
              fedilink
              English
              arrow-up
              1
              ·
              19 days 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?

              • yhvr@lemm.ee
                link
                fedilink
                English
                arrow-up
                1
                ·
                19 days 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

            • candybrie@lemmy.world
              link
              fedilink
              English
              arrow-up
              18
              arrow-down
              1
              ·
              edit-2
              24 days 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?

            • CommanderCloon@lemmy.ml
              link
              fedilink
              English
              arrow-up
              7
              arrow-down
              1
              ·
              24 days 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.

        • CommanderCloon@lemmy.ml
          link
          fedilink
          English
          arrow-up
          6
          ·
          24 days 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@lemmy.ca
            link
            fedilink
            English
            arrow-up
            4
            arrow-down
            1
            ·
            edit-2
            24 days 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.

    • Chris@feddit.uk
      link
      fedilink
      English
      arrow-up
      20
      arrow-down
      1
      ·
      24 days 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?