Je prévois de stocker un mot de passe dans mon application native (Android et iPhone). Devrais-je les stocker après les avoir cryptés? ou puis-je le stocker sans cryptage? Sont-ils vraiment sécurisés?Les données stockées dans l'application iPhone peuvent-elles provenir de sqlite ou du fichier de la liste des préférences?
Répondre
Tout iPhone jailbreaké donnera à n'importe quel utilisateur l'accès au dossier Documents de l'application. Donc, oui, c'est insécurisant. En outre, si vous mettez le mot de passe dans le code, vous êtes toujours faible, car quelqu'un peut décompiler le programme et trouver la clé. Ce que je recommanderais est un proxy.
Par exemple, nous avons une application qui se connecte à l'API de Facebook sur le téléphone. Cependant, nous ne voulons pas stocker notre clé privée API Facebook sur le téléphone, car alors tout utilisateur qui reverse notre code d'ingénieurs pourrait pirater notre application Facebook! Donc, à la place, nous stockons la clé privée Facebook sur un serveur proxy (sécurisé). Lorsque l'appareil doit interagir avec Facebook, il contacte le proxy, demande au proxy de se connecter, puis le proxy donne une clé de session à l'appareil pour l'utiliser directement avec Facebook. Certes, il est toujours piratable - mais vous ne perdrez pas votre clé privée dans le processus, et à la place, la seule chose que votre utilisateur pourrait faire est de faire les mêmes choses que vous faites dans l'API de votre serveur proxy.
Pourriez-vous nous donner un peu plus d'informations sur ce que vous essayez de faire?
Je le stockerais crypté. Si quelqu'un lisait votre mot de passe, il pourrait simplement l'utiliser. Si elle est stockée cryptée, cette personne devra la déchiffrer avant de l'utiliser.
Salut Im0rtality, Merci pour la réponse.Je ne sais vraiment pas, comment une personne peut-elle lire mon mot de passe, qui est stocké dans mon appareil. Pouvez-vous élaborer là-dessus? – Krishnan
Tout comme phooze et tomash, avec un appareil enraciné, vous pouvez lire des fichiers sensibles (par exemple un fichier où vous stockez votre mot de passe). Et si ce fichier peut être lu n'importe qui pourrait avoir accès à une partie de l'application protégée par mot de passe. – Im0rtality
Les mots de passe stockés ne sont pas sécurisés du tout. L'utilisateur déterminé peut rooter son appareil et accéder à n'importe quelle base de données et préférences. Si vous codez le mot de passe, votre application peut être décompilée pour obtenir la fonction de décodage ou être exécutée par étape jusqu'à ce que le mot de passe décrypté soit stocké quelque part dans la mémoire du processus. Cela ne signifie pas que vous ne devez pas crypter les mots de passe - utilisez n'importe quel cryptage symétrique et initialisez la clé d'une manière non triviale (c'est-à-dire une expression arythmique). Cela empêchera les script-kiddies et les programmeurs occasionnels de lire les mots de passe. Rappelez-vous juste si certains le veulent vraiment, il les obtiendra quand même.
Je voulais stocker l'utilisateur Nom et mot de passe d'un service enregistré dans l'application que je prévois de développer. Pouvez-vous élaborer sur le proxy? – Krishnan
Ajout de quelques détails sur les proxies - dépend du type de service auquel vous essayez de vous connecter, mais le concept de base est là! – makdad
Salut Phooze, Donc, vous avez une idée de ce que Twitter et Facebook Applications utilisent pour stocker le mot de passe – Krishnan