43 votes

Devrais-je masquer le secret du consommateur OAuth stocké par l'application Android?

Mon application Android contient code secret client OAuth pour l'API Twitter. Au moment où il est en .properties le fichier en texte brut, donc il faut un minimum d'efforts pour que quelqu'un le chercher dans APK.

Dois-je prendre des mesures à l'obscurcir (comme, rot13 ou stockées dans d'obfuscation de code Java)? Ou dois-je réellement éviter de faire tout cela, car elle permettrait de créer des faux sentiment de sécurité?

Comment font les gens habituellement distribution/magasin OAuth secret dans les applications Android? Qu'ont en commun c'est le secret de vol et de violence?

41voto

Eran Hammer Points 2522

La vraie question est: que fait-un attaquant d'obtenir de voler...

Vous devriez faire de votre mieux pour protéger les secrets, mais à la fin, un très motivés pirate peut toujours accéder à une application installée. C'est donc la valeur du secret contre la difficulté de l'extraction.

La valeur de la clé secrète client est l'identification de l'application. Il ne donne aucun accès aux données de l'utilisateur. Cependant, depuis que Twitter prend en charge automatique d'émission d'informations d'identification précédemment approuvé applications (connexion avec Twitter flux), un attaquant peut potentiellement construire une application web avec votre secret et de voler des données de l'utilisateur à l'aide d'un aveugle de redirection.

Le problème avec Twitter de la mise en œuvre, c'est qu'ils ne demandent pas le développeur sur la nature de la demande. S'ils le faisaient, ils n'auraient pas donné un secret pour commencer, et permettrait d'empêcher quiconque de construction d'une application web à l'aide de vos informations d'identification du client et de voler les données des utilisateurs qui ont déjà approuvé.

Le brouillage est une option, mais faible. En déplaçant le secret d'un serveur web, agissant comme une API proxy est un autre, mais que déplacer le problème ailleurs, parce que maintenant votre application doit s'authentifier auprès du serveur proxy. Cependant, ce modèle peut être raisonnablement sûr si vous avez besoin les utilisateurs à se connecter à votre site (qui peut l'utiliser, via le web vues, Twitter pour vous connecter). De cette façon, quelqu'un qui essaie d'abuser de votre proxy auront besoin de leurs utilisateurs d'ouvrir des comptes sur votre service, ce qui n'est pas très attrayante.

En bref, d'aller de l'avant et de dissimuler cela. Il ne fait pas de mal. Pensez à utiliser le modèle de proxy trop. Et peut-être de laisser Twitter connaître leurs politiques de sécurité ne sont pas "grand".

4voto

David Caunt Points 30636

Je n'hésiterais pas à lire cette analyse par l'un des OAuth auteurs, Eran Marteau-Lahav, qui cite un autre article dissection de Twitter OAuth secret des problèmes.

Mon conseil serait de dissimuler la clé, de sorte qu'il ne peut pas trivialement être extraites et vous devriez être à l'abri de chancers et les spammeurs.

Marteau-Lahav est d'avis que le protocole OAuth secrets ne devrait pas être révoquée et devraient seulement être utilisés pour la collecte des statistiques. Espérons que Twitter suivent cet avis.

-3voto

Le point principal de 0Auth est que vous ne stockez aucune information sensible précieuse sur le périphérique. Il est donc correct de stocker le secret sur le périphérique (bien mieux que les informations d'identification de l'utilisateur réel). En cas de vol des secrets de votre appareil, l'utilisateur peut toujours invalider l'accès sans avoir à modifier ses informations d'identification.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X