(Réglé) NSUserDefaults vs KeychainItemWrapper
Ben77650
Membre
Bonjour (ou re au choix),
J'ai besoin de stocker des données (nom et password) dans mon appli (afin de les réutiliser sur n'importe quelle page de l'appli).
Après quelques recherches j'ai trouvé 2 manières de faire: NSUserDefaults et KeyChainItemWrapper.
Je voulais donc savoir laquelle vous me préconiseriez s'il vous plait.
Merci d'avance
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
NSUserDefaults n'est pas sécurisé (on peut le lire en clair). Pas bon pour stocker un mot de passe.
Utilise le Keychain.
Merci Céroce pour cette réponse si rapide
Ps: le mdp est crypté en MD5 de toute manière ^^
- MD5 n'est pas du tout un cryptage, c'est un hash. Pas grand chose à voir, malgré les fréquentes confusions que font la plupart des gens. Le MD5, comme tout hash, n'est pas réversible.
- D'ailleurs le mot cryptage n'est pas le bon, tu voulais sans doute parler de chiffrement
- Enfin, en quoi c'est sécurisé, puisque si tu stockes le MD5 du mdp, c'est que c'est ce MD5 que tu envoies au serveur dans ta requête. Donc si tu utilises cette technique, qqun qui voudrait usurper ton identité et se connecter avec ton compte n'a pas besoin de ton mot de passe, il a juste besoin du MD5 de ton mot de passe qu'il va faire transiter dans la requête et basta.
- Et au pire il existe plein de sites web qui te permettent de trouver une chaà®ne qui a un MD5 donné (d'ailleurs on s'en fout que ce soit le vrai mot de passe, du moment que la chaà®ne ait le même MD5 au final)
Je t'invite à fouiller un peu le vocabulaire autour de la sécurité, y'a toujours plein de choses très intéressantes à apprendre.En tout cas, en résumé, le MD5 est loiiiinn d'être une protection quelconque, et stocker le mot de passe en MD5 dans NSUserDefaults c'est comme fermer à clé ton cadenas mais y scotcher la clé dessus
D'accord donc raison de plus de privilégier la solution KeyChainItemWrapper.
Hello,
Mon prof m'a également parlé de l'utilisation d'un singleton, et je vous avoir vos avis, savoir ce que vous en pensez.
Merci d'avance.
Bah, les singletons, si c'est correctement utilisé, c'est bien. J'vais pas répondre plus, y'a pas vraiment de sens dans ta question.
Mais pour moi, ça ne rentre en aucun cas dans le débat : NSUserDefaults Vs KeyChain.
Bah en fait je voulais savoir si c'était mieux d'utiliser un singleton ou NDUserDefaults ?
Bah du coup, si j'ai bien tout suivi, c'est intéressant d'avoir un Singleton pour gérer toutes tes communications (ou un partie).
Mais il faut juste que ton Singleton ait du sens en fait.
Et ce dernier va piocher/sauvegarder dans le KeyChain les identifiants nécessaires.
Les singletons ça a du sens pour des services ou des infos que l'on partage dans toute l'application.
Il se trouve par exemple que NSUserDefaults est un singleton. Mais ce n'est pas ce qui le définit. Ce qui définit NSUserDefaults, c'est son rôle, c'est le fait qu'il peut stocker des données (de type "préférences") qui vont perdurer entre les divers lancements de l'application.
C'est comme si tu disais que tu avais besoin de tranverser l'atlantique, à l'origine du débat tu te demandes s'il vaut mieux utiliser un bateau à voile (NSUserDefaults) ou un bateau à moteur (Keychain). Et puis là tu nous demandes s'il faut mieux utiliser un bateau à voile (NSUserDefaults) ou un truc qui a une cabine. Certes un bateau a une cabine, mais c'est pas ça qui lui permet de flotter sur l'eau, et c'est pas elle qui va te servir à traverser l'atlantique. Et puis y'a plein d'autres trucs qui ont des cabines (un camion, etc) et qui ne flottent pas et c'est pas elle qui va t'aider.
Donc le débat c'est pas NSUserDefaults pour Singleton, ça n'a pas de sens, c'est pas comparable.