¿Cómo puedo implementar de forma segura una función de inicio de sesión sin contraseña?

10

Acabo de publicar un nuevo complemento: No más contraseñas

Actualmente lo tengo etiquetado como beta porque iniciar sesión en una plataforma es un problema delicado y no quiero lanzar algo que pueda tener agujeros de seguridad. Así que aquí está mi consulta:

¿Es seguro?

He hecho lo siguiente para garantizar la seguridad:

  1. El nombre de usuario / contraseña nunca se pasan de un lado a otro, solo el hash único.
  2. El hash se elimina de la base de datos una vez que se utiliza, los hash antiguos que no se han utilizado no pueden serlo a menos que la base de datos sea pirateada, pero entonces tiene problemas más grandes.
  3. Se han escapado todas las consultas de la base de datos del hash para evitar ataques XSS.
  4. nonce agregado a la llamada ajax.
  5. nonce y confirmación agregada en el extremo móvil para evitar el ataque CSRF.

Aquí tengo una descripción completa de cómo funciona .

Próxima versión Espero implementar oauth a través de twitter, ya que iOS ahora ha funcionado en ...

Gracias por su aporte de antemano.

Editar: decidí que, como una capa adicional, agregaría una verificación de Id. De sesión para asegurarme de que es el mismo navegador que inicia sesión que el navegador que inició el inicio de sesión del código QR.

Jackreichert
fuente

Respuestas:

5

(Soy un adicto a los esquemas de inicio de sesión alternativos)

Algunas dudas sobre el escape de DB:

  • Usas mysql_real_escape_string()directamente. El método preferido es usar $wpdb->prepare()o esc_sql().

  • Las consultas de ACTUALIZACIÓN son mejor manejadas por $wpdb->update()

scribu
fuente
He actualizado el complemento para incluir eso. Gracias por el consejo.
jackreichert
5

Creo que es una gran idea, pero como siempre, la mayor debilidad es el factor humano, en este caso, sería el teléfono mismo perdido, robado o interceptado. ¿Ha pensado en agregar autenticación de 2 capas, como un código de verificación de SMS (como gmail, etc.). O una alternativa más fácil sería una cookie + palabra secreta.

¿También puede mencionar qué algoritmo está generando el código QR en su página acerca de?

Wyck
fuente
Por lo tanto, el complemento depende de que inicies sesión en tu teléfono para trabajar. El riesgo de seguridad de que pierdas tu teléfono es casi lo mismo que dejar tu PC conectada a tu sitio de wp. Estoy usando la API de gráficos de Google para generar el código qr.
jackreichert
3
Solo pensé que sería una buena idea agregar otra capa que no obstaculizara al usuario, ya que los teléfonos se roban / pierden mucho más que las PC, y en una PC aún necesitaría saber el nombre de usuario / contraseña.
Wyck