(Réglé) NSUserDefaults vs KeychainItemWrapper

Ben77650Ben77650 Membre
juillet 2014 modifié dans API AppKit #1

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


Réponses

  • CéroceCéroce Membre, Modérateur

    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 ^^


  • AliGatorAliGator Membre, Modérateur
    mai 2014 modifié #4

    Ps: le mdp est crypté en MD5 de toute manière ^^

    Looool, va falloir revoir quelques concepts de sécurité...
    • 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.


  • LarmeLarme Membre
    juin 2014 modifié #7

    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 ?


  • LarmeLarme Membre
    juin 2014 modifié #9

    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.


  • AliGatorAliGator Membre, Modérateur
    Je vois pas trop le rapport.

    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.
Connectez-vous ou Inscrivez-vous pour répondre.