security - secreto del cliente en OAuth 2.0




google-api oauth-2.0 (2)

Empecé a escribir un comentario sobre su pregunta, pero luego descubrí que hay mucho que decir, así que aquí están mis puntos de vista sobre el tema en la respuesta.

  1. Sí, hay una posibilidad real para esto y hubo algunos exploits basados ​​en esto. La sugerencia es no mantener la aplicación en secreto en su aplicación, incluso hay parte de la especificación de que las aplicaciones distribuidas no deben usar esta ficha. Ahora puede preguntar, pero XYZ lo requiere para poder trabajar. En ese caso, no están implementando la especificación correctamente y usted no debería usar ese servicio (no es probable) o B intentar proteger el token utilizando algunos métodos de ofuscación para dificultar la búsqueda o el uso de su servidor como proxy.

    Por ejemplo, había algunos errores en la biblioteca de Facebook para Android en los que se filtraban tokens a los registros, puedes encontrar más información al respecto aquí http://attack-secure.com/all-your-facebook-access-tokens-are-belong-to-us y aquí https://www.youtube.com/watch?v=twyL7Uxe6sk . En general, tenga mucho cuidado con el uso que haga de las bibliotecas de terceros (de hecho, tiene sentido común, pero si el secuestro de un token es su gran preocupación, agregue otro extra a la cautela).

  2. He estado despotricando sobre el punto 2 por bastante tiempo. Incluso he hecho algunas soluciones en mis aplicaciones para modificar las páginas de consentimiento (por ejemplo, cambiar el zoom y el diseño para adaptarse a la aplicación), pero no había nada que me impidiera leer valores de campos dentro de la vista web con nombre de usuario y contraseña. Por lo tanto, estoy totalmente de acuerdo con tu segundo punto y considero que es un gran "error" en las especificaciones de OAuth. Apuntar a que "la aplicación no tiene acceso a las credenciales de los usuarios" en la especificación es solo un sueño y le da a los usuarios una falsa sensación de seguridad ... También creo que las personas suelen sospechar cuando la aplicación les pide su Facebook, Twitter, Dropbox u otras credenciales. Dudo que muchas personas comunes y corrientes lean las especificaciones de OAuth y digan "Ahora estoy seguro", sino que usen el sentido común y generalmente no usen aplicaciones en las que no confíen.

Para usar la API de Google Drive, tengo que jugar con la autenticación usando OAuth2.0. Y tengo algunas preguntas sobre esto.

  1. La identificación del cliente y el secreto del cliente se utilizan para identificar cuál es mi aplicación. Pero deben estar codificados si es una aplicación cliente. Entonces, todos pueden descompilar mi aplicación y extraerla del código fuente. ¿Significa que una aplicación incorrecta puede pretender ser una buena aplicación mediante el uso de la identificación del cliente de la aplicación y el secreto? Entonces, ¿el usuario estaría mostrando una pantalla pidiendo permiso a una buena aplicación, aunque realmente la pida una mala? Si es así, ¿qué debería hacer? ¿O realmente no debería preocuparme por esto?

  2. En la aplicación móvil, podemos incorporar una vista web a nuestra aplicación. Y es fácil extraer el campo de contraseña en la vista web porque la aplicación que solicita permiso es en realidad un "navegador". Entonces, ¿OAuth en la aplicación móvil no tiene el beneficio de que la aplicación cliente no tiene acceso a la credencial del usuario del proveedor del servicio?






oauth-2.0