2010-08-19 8 views
2

J'ai créé une application dans laquelle j'ai utilisé l'encodage base64 et enregistré le mot de passe utilisateur dans NSUSerDefaults, mais en quelque sorte un autre développeur iPhone casse ce mot de passe. Je me demande comment a-t-il pu obtenir des données NSUserDefaults? Est-ce que quelqu'un sait comment arrêter cette chose critique et comment il a obtenu les données NSUserDefaults. Aussi quelle est la meilleure méthode de cryptage pour stocker le mot de passe de l'utilisateur dans l'iphone?Get NSUSerDefaults Données du périphérique

Répondre

2

Je vous suggère de consulter SFHFKeychainUtils. Il enveloppe le Keychain Services API et fournit une interface très simple pour stocker des informations sensibles comme les mots de passe.

Store vous Mot de passe:

NSError * error; 
[SFHFKeychainUtils storeUsername:userName andPassword:password forServiceName:@"whatever_service" updateExisting:YES error:&error]; 

Obtenez votre mot de passe retour:

NSError * error; 
password= [[SFHFKeychainUtils getPasswordForUsername:userName andServiceName:@"whatever_service" error:&error] retain]; 

Vous pouvez également effacer la valeur stockée à l'aide du deleteItemForUsername un message si vous devez vous déconnecter l'utilisateur.

+0

Merci pour la réponse. Il y a une vue de connexion simple et pour l'amour de l'utilisateur il n'aura pas à entrer à nouveau le mot de passe c'est pourquoi j'ai sauvé le mot de passe dans NSUserdefaults. Devrais-je utiliser la base de données Sqlite3? –

+0

@ rahul-vyas Non, je vous suggère d'utiliser le porte-clés. I est un couple de lignes de code (une fois que vous avez ajouté SFHFKeychainUtils.m & .h à votre projet.) (Je vais mettre à jour ma réponse.) – RedBlueThing

+2

NSUserDefaults n'est pas sécurisé, et l'encodage base64 n'est pas le cryptage. votre application a été autorisée dans le magasin, à moins que vous n'utilisiez le trousseau de clés pour stocker les informations d'identification du compte, comme cela me semble être requis par l'accord de développement. –

0

Quelqu'un qui a jail cassé iPhone a plus de contrôle sur l'appareil que vous faites. Il n'y a pas de place pour cacher un secret, pas sur le disque flash, pas en mémoire. Lorsque vous construisez un serveur, vous devez toujours supposer que l'attaquant peut connecter un client malveillant. Période fin de l'histoire.

+0

Tour Est-il possible d'obtenir des données NSUserDefaults sans périphérique jailbreaké? –

2

Un porte-clés est un conteneur chiffré qui détient des mots de passe pour plusieurs applications et services sécurisés. Porte-clés sont stockage sécurisé conteneurs, ce qui signifie que lorsque le porte-clés est verrouillé, personne ne peut accéder son contenu protégé. - Guide de programmation des services de trousseau, Apple 2010.

Je vous recommande de lire le Keychain Services Tasks for iOS.

0

Un attaquant disposant d'un accès physique peut simplement créer une sauvegarde iPhone, qui inclut des copies non cryptées de la plupart des fichiers de données.