Almacenamiento de la clave de sesión para la aplicación iOS

4

Para una aplicación de iOS que se comunica con un servicio RESTful a través de HTTPS, ¿debería almacenarse la clave de sesión en Keychain o NSUserDefaults? El nombre de usuario y la contraseña se almacenan en Keychain, y parece trivial almacenar también la clave de sesión.

Pero desde el punto de vista de la seguridad, ¿eso le brinda alguna seguridad adicional? Presumiblemente, si alguien puede acceder a sus NSUserDefaults, también puede ver el tráfico de solicitudes HTTPS de esa aplicación.

    
pregunta Marc Cenedella 11.07.2013 - 16:59
fuente

1 respuesta

2

NSUserDefaults no está cifrado y se almacena en un archivo .plist de texto simple: se puede abrir y leer fácilmente, tanto en el dispositivo como cuando se sincroniza con una Mac. NSUserDefaults es para preferencias, no para almacenar información de inicio de sesión segura. Datos confidenciales como contraseñas y claves. Las llaves deben almacenarse en el llavero. llavero de Apple La Guía de programación de servicios indica que "un llavero es un contenedor cifrado que contiene contraseñas para múltiples aplicaciones y servicios seguros. Los llaveros son contenedores de almacenamiento seguro, lo que significa que cuando el llavero está bloqueado, nadie puede acceder a sus contenidos protegidos". Además, en iOS, cada aplicación solo tiene acceso a sus propios elementos de llavero.

Como se sugiere en lynks , las claves de sesión no deben almacenarse de forma persistente. En cualquier caso, recomiendo ver los siguientes ejemplos / marcos:

respondido por el dperconti 18.04.2014 - 20:28
fuente

Lea otras preguntas en las etiquetas