2011-10-25 4 views
4

J'ai créé cette application web et j'ai créé cette API. Par souci de cet exemple, gardons les choses simples:empêcher API "spoofing" ou "piratage"

Mon application a besoin de connaître le nombre de "crédits" dont dispose l'utilisateur. L'API a un appel get_credits qui renvoie {credits: 1000}

Maintenant, comment puis-je empêcher quelqu'un d'utiliser un fichier hôte (ou une autre méthode) pour créer sa propre API qui renvoie {credits: 2000}.

Je pensais à insérer un hachage quelconque, mais comme il s'agit d'un javascript, le hachage est facilement extrait de la source. C'est la même chose pour une poignée de main, je suppose. Alors, comment sécuriser l'API?

+1

L'application Web est contrôlée par vous? Ou l'API? Ou les deux? Comment un utilisateur peut-il influencer l'API utilisée par votre application Web? – bdares

+0

Merci les gars, je sais que je ne peux pas faire confiance à l'application ou l'utilisateur, mais j'espérais qu'il y avait un moyen que je n'avais pas encore pensé. J'apprécie toutes les réactions. C'est un jeu, où le montant des crédits détermine le contenu disponible, donc je dois faire confiance à l'application pour déterminer l'authenticité du crédit. Je vais essayer d'utiliser un peu d'obfuscation et un peu de contrainte pour au moins le rendre aussi difficile que possible :) Merci! – nizzle

Répondre

0

Si c'est du côté client, vous ne pouvez pas faire grand-chose - faites un effort maximum. MAIS vous devez vous assurer que sur le retour, vous validez la réponse. Ne faites jamais confiance aux utilisateurs :-)

2

Vous devrez le faire différemment, pour avoir une application vraiment sécurisée. Vous ne devriez jamais faire confiance à l'App, par l'utilisateur final, car peut-être que l'utilisateur ou le pirate pourrait modifier le code.

Donc je recommande de garder tous les achats etc. sur le serveur. Parce que je ne parle pas beaucoup de votre système, je ne peux pas vous aider beaucoup.

Ce serait bien, si pour chaque élément un hachage est généré par le serveur, ce hachage pourrait permettre à l'utilisateur d'afficher à d'autres utilisateurs, qu'il a vraiment acheté l'élément.

Veuillez noter que ce hachage doit être long et unique, car sinon les utilisateurs pourraient les brutaliser.

J'espère que vous comprenez mon et ma réponse peut vous aider ;-)

0

Je vais maintenant vous dire comment mon système fonctionne. pour obtenir les crédits pendant le jeu, je fais une requête ajax pour les charger. La requête ajax appelle une simple page php où il y a un "echo $ credits". Donc, il est impossible de pirater. si quelqu'un modifie les crédits côté client, quand ils demandent un cadeau je vérifie avec php les crédits côté serveur pour être sûr qu'ils sont légitimes: P - Veuillez considérer pour vérifier si vous êtes vulnérable aux attaques par injection mysql, pour empêcher quelqu'un de pirater vous crédite le système: D

+1

vous pourriez intercepter l'appel avec violoneur et retourner tout ce que vous vouliez –