¿Técnicas para omitir la verificación de longitud cero en javascript?

0

Estoy trabajando en una aplicación node.js que permite a los usuarios registrarse en cuentas a través de las redes sociales. Cuando lo hacen, se crea una entrada en nuestra base de datos con su dirección de correo electrónico y una contraseña en blanco.

Cuando vi esto, me preocupé de que alguien simplemente pudiera proporcionar una dirección de correo electrónico y una contraseña en blanco para iniciar sesión como cualquier persona que tuviera una cuenta de redes sociales. Después de algunas pruebas rápidas, parece que hay una línea en el código de autenticación que arroja un error si hay una contraseña de longitud cero. La línea está abajo:

 if (!username || !password) { ...

Lo único que se me ocurrió al intentar hacer esto fue pasar un carácter DEL codificado en la URL ( %7F ) pero esto tampoco se saltó.

Tengo curiosidad por saber si estoy a salvo con lo anterior o si hay algún carácter que podría pasarse y que podría pasar el cheque anterior.

    
pregunta Abe Miessler 01.10.2014 - 19:49
fuente

1 respuesta

3

La prueba que tienes:

if (!username || !password)

Comprueba si los valores username y password son valores false de javascript. Un valor falsey en javascript es cualquiera de estos: null , undefined , 0 , false , NaN o una cadena vacía.

Una cadena vacía en javascript es una cadena de longitud cero, por lo tanto, si tiene al menos un carácter (cualquier carácter será suficiente), entonces no es una cadena vacía.

Entonces, si debido a la forma en que está estructurado tu código, sabes que tanto username como password siempre serán cadenas, entonces el código anterior solo está comprobando para ver si alguna de ellas es una cadena vacía.

No hay ningún carácter que pueda estar en esas cadenas que pasarían la prueba anterior. Una de las cadenas debe estar completamente vacía (longitud cero) para pasar esa prueba.

    
respondido por el jfriend00 01.10.2014 - 21:29
fuente

Lea otras preguntas en las etiquetas