2011-09-21 12 views
6

Mi aplicación de iPhone se conecta a un servicio web usando un nombre de usuario y una contraseña.¿Cómo almacenar con seguridad las credenciales ingresadas en las Preferencias de la aplicación?

Prefiero guardar las credenciales en las preferencias de la aplicación (conjunto de configuraciones) como la aplicación de correo. ¿Esto es lo suficientemente seguro? ¿Es posible guardar esos valores en el llavero (a través de las Preferencias de la aplicación)?

Editar:

Quiero que mis usuarios introducir sus credenciales en las preferencias de la aplicación de mi aplicación. Normalmente, puedo recuperar estos datos en mi aplicación con NSUserDefaults. Pero Preferencias de aplicaciones guarda los datos como texto sin formato y no está encriptado ni hash. ¿Hay una manera segura? P.ej. Conozco el llavero en el iPhone y ¡me parece genial! ¿Puedo usar el llavero para guardar las credenciales ingresadas en Preferencias de la aplicación?

Alimento para el pensamiento: ¿Cómo lo hace Apple? Quiero decir, cuando quiero usar la aplicación de correo, proporciono mi nombre de usuario y contraseña en las preferencias de la aplicación. ¿Están esos valores almacenados como texto sin formato?

+0

similares a esta pregunta en desbordamiento de pila. http://stackoverflow.com/questions/190963/can-i-access-the-keychain-on-the-iphone – iamsult

+0

realidad, no. sé que el llavero Solo quiero saber si es la mejor solución para mí. – Sandro

+0

Sí, puede ir con eso – iamsult

Respuesta

5

¿verificó la keychain documentation? Por seguridad, consulte este white paper por el Instituto Fraunhofer SIT.

+0

Arne es correcto. En la actualidad, no hay ningún lugar en el dispositivo donde pueda guardar con seguridad un nombre de usuario y contraseña. Es mejor tener el utilizar Ingrese una identificación de usuario y una contraseña que autenticarán la aplicación. –

+0

Terminé implementando una vista modal de inicio de sesión en mi aplicación para almacenar las credenciales en el llavero. Entonces esta respuesta esta bien. Aún así, no sé cómo guardar de forma segura los datos de las preferencias de la aplicación en el llavero – Sandro

2

Puede guardarlo de forma segura con Security.framework.

Es una muy buena muestra de Apple donde se discuten muchos aspectos del uso de ese marco. Te aconsejo que lo analices. Aquí está el enlace a esa muestra: GenericKeychain

Este ejemplo muestra cómo agregar, consultas para, eliminar y actualizar un elemento de tipo llavero clase genérica. También demuestra el uso de elementos de llavero compartidos. Todas las clases muestran un comportamiento muy similar, por lo que los ejemplos incluidos se escalarán a las otras clases de Elementos de llavero: Contraseña de Internet, Certificado, Clave e Identidad.

0

Puede eliminar elementos de NSUserDefaults cuando su aplicación se ejecuta después de que el usuario usa Configuración para ingresarlos en las Preferencias de la aplicación de la aplicación. Luego póngalos en el llavero. Sin embargo, estos elementos pueden estar en texto plano en almacenamiento mientras tanto (dependiendo del modelo de iPhone, algunos pueden cifrar el almacenamiento flash y las copias de seguridad), antes de que pueda eliminarlos de NSUserDefaults.

+0

. Tuve el mismo pensamiento. Pero como dijiste: guarda los datos confidenciales en texto plano temporalmente. – Sandro

2

Parece que muchas personas no parecen entender su pregunta. Lamentablemente, no puedo encontrar la respuesta yo mismo. La pregunta es ¿cómo se usa keychain AND NSUserDefaults al mismo tiempo? También me gustaría utilizar la interfaz NSUserDefaults. Esperemos que podamos resolver esto ...

Una opción sería almacenar solo el nombre de usuario. Luego, cuando la aplicación se inicia, si no hay una contraseña en el llavero o si hay una contraseña incorrecta en el llavero, solicite una nueva contraseña.

0

Apple posee todo el sistema operativo y, por supuesto, la aplicación de correo. Están usando funciones fuera del SDK público porque pueden hacerlo. ¿Cómo crees que se puede ejecutar la aplicación de correo en segundo plano y seguir buscando tus correos?La aplicación normal no puede lograr esto :(

Volviendo a su pregunta principal, usar el llavero es la manera correcta de hacerlo. Pero es probable que deba prohibir a los usuarios ingresar el nombre de usuario & contraseña en Preferencias de aplicación. No hay forma de proteger eso.

Cuestiones relacionadas