9
votes

Dans le module de BillingService, ce qui doit être modifié pour augmenter la sécurité?

Le commentaire de la classe BillingService recommande que :

Vous devez modifier et obscurcir ce code avant de l'utiliser.

OK, mais ce que doit être modifié?

Le nom de la classe? La balise utilisée pour la journalisation? Noms de méthode et membres de données? La logique et le flux de programme lui-même? Autre?

En d'autres termes, je peux comprendre le besoin d'obfuscation, mais comment puis-je m'éloigner avec la mise en œuvre de la recommandation sans réécrire tout de zéro (potentiellement avec des bugs qui pires que ne rien modifier)?


0 commentaires

3 Réponses :


0
votes

Ils l'expliquent comme suit:

L'application d'échantillon de facturation intégrée est distribuée publiquement et peut être téléchargé par n'importe qui, ce qui signifie qu'il est relativement facile pour un attaquant pour inverser l'ingénieur Votre application si vous utilisez l'échantillon code exactement comme il est publié. L'exemple d'application est destiné à être utilisé que comme exemple. Si vous utilisez une partie de l'échantillon application, vous devez la modifier avant de la publier ou de le publier comme une partie d'une application de production.

En particulier, les attaquants recherchent des points d'entrée connus et des points de sortie Dans une application, il est donc important que vous modifiez ces parties de votre code identique à l'application exemple.

Cela signifie que vous n'utilisez pas le code comme indiqué, en modifiant une partie de celui-ci afin que les pirates informatiques ne puissent pas savoir quel code vous utilisez.

Fondamentalement, je ne pense pas qu'ils signifiaient la facturation elle-même, mais la façon dont vous l'utilisez dans votre application.


4 commentaires

OK, mais ce commentaire apparaît dans plusieurs modules de l'échantillon, au début de chaque module: BillingService, ResponsibleHandler, achetéAtabase. Quel genre de changements?


Modifications apportées à l'application qui les utilise, non modifiées directement.


J'aime votre interprétation, mais j'ai bien peur que ce soit le contraire de ce que Google signifiait: "Si vous utilisez Toute pièce de l'application exemple, vous devez la modifier avant de le publier ou de le publier dans le cadre duquel d'une application de production. " Cela signifie que cela signifie une restructuration au moins des 3 modules mentionnés ci-dessus.


BillingService n'est pas de l'application de l'application, il s'agit d'un service utilisé dans l'exemple d'application. Donc, ce que vous avez à faire est de modifier le code d'application exemple.



3
votes

Aucune bonne nouvelle ici: Vous devez changer tout ce que vous pouvez, en plus d'utiliser PROGUARD. Cela inclut la fusion de cours, les fractionnement, déplacer certaines méthodes d'un module à l'autre, et notamment le cryptage des informations d'achat stockées dans la base de données, comme la description de la classe achetéeAtabase suggère:

Vous devez utiliser un obfousciateur avant de stocker des informations pour stockage persistant. L'obfousciateur doit utiliser une clé spécifique à l'appareil et / ou à l'utilisateur. Sinon un attaquant pourrait copier une base de données plein d'achats valides et distribuez-le aux autres.

La raison en est que, avec des outils tels que Antilvl, il est très facile de comparer votre code décompilé (obscurposé!) à l'échantillon d'origine et de déduire de celui-ci au besoin pour le compromettre. Il est impossible d'éviter complètement la fissuration, mais vous devriez essayer de le rendre aussi difficile que possible.


0 commentaires

7
votes

Je travaille à ce moment-là et mon approche, jusqu'à présent, c'est comme suit:

  1. J'utilise le service BillingRecefeiver, le service de facturation, le service de commande et la réponse de réponse.
  2. J'ai déplacé toutes les constantes dans ma propre classe de constantes et que toutes les classes ci-dessus sont incluses dans mon propre colis.
  3. J'ai fini par l'absence de la classe achetéAtabase et j'ai intégré des parties dans ma propre base de données SQLite, DBADAPPTER et des classes d'accès aux données.
  4. J'ai changé la catalogueur dans mon propre objet modèle et mon interface utilisateur sera très différente de l'exemple par exemple. Groupe de radiobutton plutôt que spinner pour les articles de produit (je n'ai que 4).
  5. Il est indiqué dans la classe de sécurité "pour une implémentation sécurisée, tout ce code doit être mis en œuvre sur un serveur qui communique avec l'application". Je suis "chanceux" que mon application doit contacter mon serveur de toute façon, je vais donc mettre en œuvre ces mesures de sécurité sur le serveur et que je vais faire ma propre validation des informations d'achat passées au serveur. Je cherche à sécuriser cette partie des comms à l'aide de SSL et j'ai déjà besoin d'un nom d'utilisateur / mot de passe préalable (haché et salé) qui est stocké sur mon serveur.
  6. Je découpe tout autre code superflu que je n'utilise pas par exemple. Modification de la charge utile.
  7. Certaines méthodes ont 5 ou 6 paramètres dans leur signature par exemple. OnaTurbaseStatechangeed () - Je pensais à y combiner dans un seul objet wrapper (mais je ne l'ai pas encore fait).
  8. Je le teste lentement et à fond, de sorte que je comprends ce qui se passe et à la suite des recommandations. J'ai utilisé l'échantillon complet au début pour m'assurer qu'il a fonctionné et testé les réponses statiques. Ensuite, j'ai commencé à faire mes propres changements tout en faisant des tests statiques. Je teste toujours avec des réponses statiques et je suivrai le flux de messages pour comprendre les interchangees en cours. Une fois que je suis content de cela, je vais tester avec mes propres identifiant de produit et essayer de me satisfaire des données et de sa sécurité.
  9. J'ai pensé que la chaîne de développeurPayload pourrait également être signée et encypte et est renvoyée sur mon serveur, déchiffré et vérifié pour l'intégrité.
  10. Enfin, j'opposerai au code à l'aide de PROGUARD et suivez certains des conseils pour le faire, qui sont disponibles sur Stackoverflow.

    J'espère que cela aide.


1 commentaires

Votre réponse détaillée mérite définitivement le +50. Merci.