2010-04-23 12 views
2

Je souhaite créer une application iPhone composée de deux parties: l'application elle-même et un composant côté serveur.Sécurisation d'un service Web pour utilisation à partir d'une application iPhone personnalisée uniquement

À la demande d'un utilisateur, l'application envoie des données au serveur qui doit être géré par des opérateurs humains.

Pour prévenir les abus d'un utilisateur de l'application iphone, l'identifiant de l'iphone est envoyé avec la demande, et les opérateurs peuvent blacklister les intrus pour refuser leur accès iphone au service.

Jusqu'ici tout va bien. Maintenant, le problème est: Quelqu'un pourrait facilement découvrir l'adresse du composant côté serveur, et écrire un script pour envoyer des demandes bidon, en utilisant plusieurs adresses IP, etc

Donc, ma question est: comment puis-je me défendre contre cela? Captchas pour se protéger contre les attaques par script ou nécessitant que l'utilisateur s'enregistre lui-même ne sont pas une option pour cette application particulière

Si j'avais le contrôle du téléchargement, j'associerais un identifiant unique à chaque application téléchargée, mais évidemment ce n'est pas une option avec l'appstore.

Quelle serait votre approche pour sécuriser la partie serveur?

Edit:

Qu'en est-il un système de réponse de défi où le serveur envoie un jeton au client, sur la base que le client construit un nouveau jeton avec un algorithme savoir à la fois?

Au moins, cela rend la tâche plus difficile pour un attaquant car il doit désosser le binaire ARM. Avez-vous une expérience (j'ai 0) avec une approche similaire?

+0

vote pour fermer ... complètement et totalement impossible. – rook

Répondre

-1

Dans le cadre de votre application iPhone, vous pouvez inclure une fonctionnalité d'inscription/inscription, et pendant ce processus, collectez l'ID de l'iPhone. Donc, sur votre serveur, vous auriez une liste d'identifiants VALID, et vous pouvez ignorer les requêtes de n'importe quel iPhones ne figurant pas dans la liste (ainsi que les requêtes bidon/fausses).

+0

Si je devais inclure une étape d'enregistrement, comment puis-je être sûr que la demande d'inscription provient vraiment d'un iPhone et que l'identifiant n'est pas faux? – user238707

+0

@mme bonne question, et je ne pense pas que vous pouvez. – rook

-1

L'application iPhone peut signer numériquement un message d'enregistrement (contenant l'ID de l'appareil) et l'envoyer à l'application Web. Bien sûr, cela ne fonctionne que jusqu'à ce que quelqu'un extrait la clé de l'application iPhone, mais il pourrait tenir pour ... disons une demi-heure.

Vraiment, vous ne pouvez pas. Pardon.