tutorial - ¿Cómo asegurarse de que las solicitudes de API provienen de nuestra aplicación móvil(iOS/Android)?
url de la política de privacidad facebook developers (1)
NO inserte una sola clave API en la aplicación. Sus preocupaciones son válidas con respecto al efecto de los usuarios maliciosos. Además, tiene una grave vulnerabilidad en su configuración actual en la que podría hacer que un usuario de la API malintencionada cambie las preferencias de otros usuarios proporcionando UDID falsos.
En su lugar, cree un servicio de "registro" que se invoque al iniciar la aplicación por primera vez en el dispositivo, que genera y devuelve un GUID basado en el UDID. Almacene el GUID en las preferencias de usuario locales de su dispositivo y en el servidor. Lleve un registro del GUID y cópielo con el UDID en cada solicitud en su servidor.
Asegúrese de que todo esto ocurre sobre SSL.
Con este enfoque, no se puede abusar de una clave de API maestra incorporada. Además, puede incluir en la lista negra a usuarios abusivos marcando combinaciones de GUID / UDID y también puede eliminar su problema existente de posible enmascaramiento de dispositivos registrados existentes. Sin embargo, no puede evitar el registro malicioso de dispositivos que aún no se hayan registrado con su servicio. Eso siempre será un peligro potencial de usar una ID de dispositivo como un identificador de usuario.
Hay mecanismos de autenticación aún mejores y más establecidos que tienen un mejor enfoque, es decir. OAuth, JSessionIDs, etc. que debería echar un vistazo.
Además, en el futuro no debería utilizar el UDID para identificar a sus usuarios, ya que su acceso ha quedado en desuso. Puede imitar el UDID para sus propósitos creando un GUID de dispositivo personalizado en el dispositivo luego de la instalación de la aplicación y guardándolo en sus preferencias de usuario local.
Estamos creando una aplicación móvil y queremos implementar algún tipo de autenticación para asegurarnos de que nuestra aplicación solo acceda a la API. Los usuarios de la aplicación son anónimos, sin inicios de sesión, aunque sí los identifico a través de la identificación del dispositivo para mantener la configuración y demás.
El enfoque más sencillo parece ser generar una clave Guid / API que envío con cada solicitud a través de SSL.
Lo que me preocupa es la posibilidad de que una persona maliciosa con mucho tiempo libre descargue la aplicación, la descompile para obtener la clave API y las solicitudes JSON, y luego destruya mi base de datos lo mejor que pueda.
¿Es SSL, una clave de API, una ID de dispositivo y una API con llamadas lo más restringidas posible? ¿Debo estar tomando un enfoque diferente? ¿Son mis miedos fundados o infundados?