es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo autorizar llamadas a API realizadas desde una aplicación móvil sin ningún registro ni inicio de sesión?

Mi aplicación móvil realiza algunas llamadas a la API durante su uso y algunas de ellas no deberían ser posibles desde ningún otro lugar (por ejemplo, postman).

Por ejemplo, si tienes una tabla de base de datos llamada “user” y una columna llamada “membership” y el usuario de la aplicación realiza una compra dentro de la aplicación, se realiza una llamada a la API para actualizar esa fila y cambiar la columna de, por ejemplo, “standard” a “premium”.

Ahora, en teoría, si alguien conoce la URL y envía una solicitud HTTPS, podría mejorar su membresía sin comprar nada. He estado investigando durante un tiempo, pero me siento un poco perdido. No hay registro ni inicio de sesión. Utilizo el ID de hardware único de los dispositivos de los usuarios como clave principal para almacenar todo en la base de datos. Pensé en algo como:

1) Cuando el usuario abre la aplicación, se envía una solicitud y el servidor responde con una clave generada aleatoriamente.

2) Todas las solicitudes que el usuario hace deben usar esa clave, que enviaría en la cabecera, de lo contrario se rechazarán.

¿Es esto lo único que puedo hacer? ¿Cuál es la mejor práctica para una aplicación móvil que no utiliza ningún tipo de registro?

Si importa, utilicé Flutter para la aplicación y Flask para el backend que está conectado a una base de datos PostgreSQL.

Edit: Estoy utilizando HTTPS en todas partes, no HTTP.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Android, API, REST, HTTP y Flask, una solución para garantizar que ciertas llamadas de API solo se puedan realizar desde la aplicación móvil sería implementar autenticación y autorización en los puntos finales de la API. Esto podría implicar implementar un sistema de inicio de sesión o registro que genere un token de acceso único para cada usuario, que luego se utiliza para autenticar las solicitudes de API.

    Sin embargo, en casos en los que no se desee un registro o inicio de sesión, también podría ser una solución válida generar una clave única para cada usuario, como se sugiere en la pregunta. Esta clave puede ser generada por el servidor y enviada a la aplicación al abrirse. Todas las solicitudes posteriores realizadas por la aplicación podrían incluir esta clave en el encabezado, y el servidor rechazaría cualquier solicitud que no tenga la clave correcta. Esto proporciona un nivel de seguridad, ya que solo la aplicación tendría acceso a esta clave, evitando que los atacantes imiten fácilmente las solicitudes de API utilizando herramientas como Postman.

    Implementar HTTPS para todas las solicitudes de API también es importante para garantizar una comunicación segura entre la aplicación y el servidor, evitando ataques de intermediario. En resumen, implementar autenticación y autorización, o generar una clave única para cada usuario, junto con el uso de HTTPS para todas las solicitudes, son mejores prácticas para garantizar llamadas de API seguras en una aplicación móvil.

Comments are closed.