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
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.
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.
Tour Est-il possible d'obtenir des données NSUserDefaults sans périphérique jailbreaké? –
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.
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.
- 1. Chargement des données dans NSUserDefaults
- 2. Migration de données de base du simulateur vers le périphérique
- 3. Résultats inattendus de NSUserDefaults boolForKey
- 4. iPhone NSUserDefaults
- 5. NSUserDefaults & bindings
- 6. NSUserDefaults Question
- 7. Preset NSUserDefaults
- 8. NSUserDefaults dans monotouch
- 9. C# Com Récupération de l'image binaire (Tiff) Données du périphérique
- 10. DDMS n'affiche pas les données du programme sur le périphérique
- 11. NSUserDefaults - rechargement nécessaire?
- 12. get gérer du processus
- 13. Settings.bundle vs NSUserDefaults
- 14. NSUserDefaults: plantage de setObject
- 15. Test du périphérique iPhone Problème
- 16. Iphone nom du périphérique Bluetooth
- 17. Nom local du périphérique Bluetooth
- 18. Lecture du micrologiciel du périphérique physique
- 19. iPhone NSUserDefaults difficulté de persistance
- 20. NSUserDefaults n'épargnent pas correctement
- 21. jquery get() grignoter des données?
- 22. NSUserDefaults iPhone est une base de données ou plist
- 23. NSUserDefaults et l'ajout de données void * dans ce
- 24. NSUserDefaults sauvegarde les données enregistrées dans le magasin d'applications
- 25. Vérification que vous NSUserDefaults a des données valides
- 26. Les données ne sont pas enregistrées dans NSUserDefaults
- 27. NSUserDefaults BOOL return (null)
- 28. paramètres initiaux de NSUserDefaults
- 29. Comment sécuriser NSUserDefaults?
- 30. Tableau dans Monotouch NSUserDefaults
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? –
@ 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
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. –