Min Password Length vs Block Common Passwords

My bet there is that the client-side validation is counting octets, whereas the server, being Unicode-aware, is counting characters, and coming up with a different result.

1 me gusta

Characters in that codeblock (and indeed all of U+1xxxx) are four-octets long in UTF-8. I don’t know what it’s counting, but Unicode 7/Unicode 8 issues (like amphora) could be in play.

Taking the string " :slight_smile: " as an example, javascript says

"😀".length = 2

and Ruby says

"😀".length = 1

Which is the correct implementation here? @codinghorror's blog post says:

because it’s nice and simple for users. So :slight_smile: is one character. That sounds reasonable to me.

However… the blog also says

This is indeed true of the Discourse password fields - one emoji = 2 characters. So if it’s showing as 2 characters in the password field, surely that should count as 2 characters in a password :confounded:


On a related note, it is currently very difficult to type emojis directly into html password inputs - you can only copy/paste them in. This is the case on Chrome on mac (using system emoji window), and also Safari on iOS (the emoji button doesn’t even show up with the password field focused). So, as much as I try, I can’t use :white_check_mark: :horse: :battery: :paperclip: as my password on Discourse (without cheating with copy/paste).

2 Me gusta

😀 is four octets in UTF-8: Base64 visualizer

I have no idea why Javascript gets that count. (UTF-16?) But 😀 does show as ⏺⏺ in the password field of Discourse (for me).

3 Me gusta

It would appear so (from here)

3 Me gusta

A sentence with spaces - could be the best personal password choice

I’m not sure a space would work. It’s a control character and there might be some filters somewhere that wouldn’t like it.

A space is absolutely fine, it’s just another character as far as a password is concerned. Try it here on meta - it works.

4 Me gusta

Voy a probar de nuevo, ahora que sé que mi gestor de contraseñas está :amphora: seguro. Ahora ocurre lo mismo: la cantidad de emojis necesaria para que aparezca el mensaje verde de “correcto” no es suficiente para que funcione realmente. Y a medida que probaba contraseñas cada vez más largas, de forma iterativa, me cerró la sesión; creo que fue en el tercer intento. Cuando finalmente lo configuré con éxito, con una contraseña de :ten: emojis, aún parpadeó el mensaje de “te han cerrado la sesión”, pero en realidad no me cerró la sesión.

No estoy seguro de si ese cierre de sesión es un error específico de los emojis o alguna característica mal planteada (o al menos poco útil). Si es una característica, por favor, que el cuadro de “te han cerrado la sesión” explique por qué.

Sí, esto se debe a una limitación heredada de JavaScript que hace que cuente incorrectamente la longitud de las cadenas que contienen emojis (y otros caracteres del Plano Astral). El servidor cuenta la longitud correctamente.

2 Me gusta