verificar tutuapp puedo pudo origenes fuentes fiables empresarial desconocidos desconocidas desarrolladores desarrollador confiable como apps app activar abrir php mysql iphone ios sqlite

php - tutuapp - no se pudo verificar la app iphone



Acceda a la base de datos de forma segura desde la aplicaciĆ³n iOS (4)

Muchas aplicaciones móviles utilizan API para obtener y almacenar información en servidores. Determinar algunos de estos puntos finales no es complicado, y tener puntos finales no asegurados que devuelvan información confidencial es algo peligroso.

El primer nivel de protección de su API podría ser crear una "clave de API" que identifique la aplicación. Esta clave se almacena en el servidor y se comprueba en cada solicitud. La solicitud sin clave de API debe devolver un código de estado HTTP 401 (no autorizado).

Las claves API están bien, pero son insuficientes cuando algunas llamadas solo pueden ser realizadas por ciertos usuarios. Por ejemplo, un usuario necesita actualizar su información, solo el propietario de la información debe poder realizar esta llamada, y no otro usuario. Para esto puede pasar información de autenticación que identifica al usuario para realizar la acción de actualización.

No recomiendo usar el nombre de usuario / contraseña en cada solicitud, en lugar de eso, haga que el usuario se autentique una vez, y permita que el servidor envíe los tokens de autenticación que la aplicación puede usar para realizar futuras llamadas autenticadas. Eche un vistazo a OAuth2 como un posible marco de autorización. También puedes ver OAuth 2.0 - Lo bueno, lo malo y lo feo .

Sugiero usar el servidor BShaffer OAuth2 en PHP . También vea Mejores prácticas para asegurar una API REST / servicio web para alternativas.

Por su pregunta, parece que hay un subsistema existente, recomiendo crear una interfaz simple que haga que el subsistema sea más fácil de usar y reutilizable en múltiples clientes en lugar de modificar el subsistema para acomodar una API. Esto se conoce comúnmente como un patrón de diseño de fachada .

Muchos marcos de PHP tienen paquetes para implementar API personalizadas de RESTlike. Symfony tiene FOSRestBundle , FuelPHP tiene un controlador REST FOSRestBundle FuelPHP y CodeIgniter tiene un servidor REST .

Para resumir:

  1. Cree una interfaz simple para acceder a la información del sistema existente (una API REST).
  2. Proteja su información privada utilizando un mecanismo de autenticación adecuado (tal vez OAuth2).
  3. Utilice las bibliotecas y / o marcos existentes para acelerar el desarrollo.
  4. ¡Su código será reutilizable en múltiples aplicaciones y plataformas como resultado!

Elegí MySQL después de buscar entre MySQL y SQLite para acceder porque la aplicación de mi iPhone necesita obtener información de una base de datos en línea que ya está en MySQL.

Creo que la forma tradicional de acceder a la información sería: tener un archivo php en el servidor que lo haga por usted.

La aplicación de iPhone llamaría a este archivo php y devolvería los resultados.

La aplicación iOS llamará http://somewebsite.com/index.php?id=234 y el sitio web imprimirá el nombre de usuario de id = 234.

Ahora, ¿qué tan seguro es este proceso? ... Obviamente usaría declaraciones preparadas y https. Pero, ¿y si alguien encuentra la URL de este sitio web? ¿Cómo me protejo contra el uso indebido (alguien podría generar una lista de todos mis usuarios)? ¿Es esta la forma estándar de conectar su aplicación de iPhone y obtener información de una base de datos?

Edición: Además, digamos que necesitaba crear una página de inicio de sesión de la aplicación ... Tengo una base de datos MySQL con nombre de usuario y contraseña (obviamente, hash). ¿Sería seguro usar las variables $ _GET para ver si están autenticadas? Como por ejemplo: https://somewebsite.com/checkauth.php?username=test&password=C3LyiJvTCQ14Q y https://somewebsite.com/checkauth.php?username=test&password=C3LyiJvTCQ14Q que el php imprima sí o no. Ejemplos de imágenes a continuación:

Asumiría que el método anterior no sería seguro de hacer ... pero necesito estar iluminado.

Además, prefiero evitar llamar a la base de datos dentro de la aplicación utilizando API de terceros, no es compatible con Apple.


Si desea acceder a la base de datos desde la aplicación IOS y guardar los datos en la base de datos, debe usar la solución de middleware.

que es el servicio web

Cree un servidor web en Microsoft ASP dot Net y acceda a ese servicio web en la aplicación IOS Con eso puede comunicarse entre dos sistemas operativos diferentes.

el servicio de devolución de servicios web es XMLdoucment, que se puede analizar más a fondo con xml purser.


Si está buscando una alternativa a un enfoque de "crear una API desde cero", hemos utilizado un servicio web llamado Kumulos disponible en kumulos.com para una solución rápida y fácil.

Este servicio le permite a un desarrollador conectarse a una base de datos MySQL y construir el modelo de datos y las API a través de una página web y luego implementar una biblioteca nativa en su plataforma. Creo que también puede importar un modelo de datos existente también.

Una vez que el modelo de datos se construye en la página web, puede crear API y especificar parámetros de entrada y salida. Las API se modelan según el tipo de operación de SQL que está realizando, como SELECCIONAR, ACTUALIZAR, INSERTAR, BORRAR.

En su caso, desearía modelar una IU de inicio de sesión / autenticación que acepte el nombre de usuario y la contraseña (con hash), valide los datos en la tabla de Usuarios y devuelva los resultados de la autenticación.

Una vez que sus API se modelan a través de la página web, puede "implementar" su configuración y generar bibliotecas nativas para iOS, Android, PHP y otros.

La biblioteca de Obj C generada se incluye en su proyecto y usted realiza y responde a las API mediante llamadas objetivas y delegados.

Kumulos incluye algunas otras características, como la exportación de datos, la medición de llamadas a la API y lo que llaman KScript. Esta es esencialmente la capacidad de envolver su llamada en javascript en el servidor (también configurado a través de la página web) para ampliar enormemente la flexibilidad y la capacidad de la funcionalidad de llamada a API que puede crear.

Hemos tenido un par de preguntas o problemas de soporte en los últimos meses y su apoyo ha sido de primera clase. Su columna vertebral está en Rackspace. Tenemos alrededor de 8 o 10 aplicaciones de producción ejecutando APIs a través de ellas en este momento y estamos bastante satisfechos de no tener que contratar a un desarrollador de API :)


La mejor manera de hacerlo sería configurar una API para interactuar con la base de datos en el servidor y su aplicación de iPhone solo consulta la API y devuelve los datos en un formato legible por máquina, como JSON , consulte http://en.wikipedia.org/wiki/JSON y http://json.org/ . Por lo tanto, para el inicio de sesión del usuario, el servidor podría devolver algo como:

{ "result": false, "error": "Invalid username or password" }

Esto sería generado por PHP con el siguiente código:

echo json_encode(array( "result" => false, "error" => "Invalid username or password" ));

También tenga en cuenta que, debe usar los códigos de respuesta HTTP junto con esto, por ejemplo, 401 para personas no autorizadas.

JSON puede utilizar estructuras booleanas y otras estructuras de datos dentro de su formato. Casi todos los idiomas principales tienen soporte / bibliotecas para ello.

Las ventajas de esto es que le permite crear otras aplicaciones utilizando la misma API, como una versión de Android o un sitio web real.

Esta pregunta SO es un buen punto de partida para la seguridad de las aplicaciones móviles:

Creación de una API para aplicaciones móviles - Autenticación y autorización

Los puntos principales son asegurarse de usar HTTPS. Al enviar credenciales de usuario, puede devolver un token de usuario (clave de api) que se puede usar para futuras solicitudes y se puede almacenar dentro de la aplicación del iPhone para poder acceder en el futuro.

Por ejemplo: https://iphoneapp.com/notifications.json?key=98fy92473r92hAAIYEFG397qbqwiuUEAF

Su clave debe enviarse en un encabezado HTTP o en la POST para que no se registre en registros, etc.

Nota: Esto es sólo una cadena aleatoria escrita en el teclado.

Este método le permite eliminar / regenerar la clave si se ve comprometida. También puede establecer la limitación de velocidad en las teclas y varios otros parámetros.

Otro gran beneficio es la construcción de una API que utiliza su propia aplicación significa que se mantendrá a un alto nivel y otras compañías de terceros también pueden usar la API (si usted lo permite).

Edición: Además, digamos que necesitaba crear una página de inicio de sesión de la aplicación ... Tengo una base de datos MySQL con nombre de usuario y contraseña (obviamente, hash). ¿Sería seguro usar las variables $ _GET para ver si están autenticadas? Como por ejemplo: https://somewebsite.com/checkauth.php?username=test&password=C3LyiJvTCQ14Q

En su lugar, debe enviar esos datos confidenciales mediante POST, pero cualquier servicio debe iniciar sesión en algún momento. El uso de HTTPS debería ayudar más, ya que evita las escuchas ilegales. Después de la primera autenticación, puede devolver el token y obtener los beneficios mencionados anteriormente.

En cuanto al inicio de sesión del usuario, ya que su PHP cumple con las buenas prácticas, no debería tener problemas. Visite http://www.phptherightway.com/ . Le ayudará mucho si tiene preguntas.

Definitivamente investigue OAuth y utilice eso si puede / quiere hacerlo.

Este es solo un punto de partida y NO está destinado a ser utilizado palabra por palabra, se requieren más lecturas y búsquedas en Google.