2011-09-22 1 views
1

J'ai un backend qui gère les requêtes vers une base de données. Mes applications ne parlent pas directement à la base de données pour des raisons de sécurité.Authentification de la communication au backend depuis iOS

Comment puis-je m'assurer que seules mes applications parlent au serveur sur mon serveur? Je ne veux pas que d'autres personnes interrogent mon backend et essaient d'accéder aux données. Je ne veux que mes applications, que je construis, pour en parler. Dois-je ajouter quelque chose comme Oauth ou utiliser des certificats?

Quelle est la meilleure façon pour les applications iOS (ou les applications en général) de parler à un backend?

Répondre

0

Vous vous demandez comment une application installée sur un appareil iOS peut s'authentifier auprès de votre serveur.

Comment identifiez-vous vos utilisateurs?

Si vous pouvez identifier vos utilisateurs, le programme pourrait au premier démarrage se connecter à votre serveur, fournir un nom d'utilisateur/passe et obtenir un jeton "secret". Avec ce jeton, il peut accéder au backend. Vous pouvez stocker ce jeton ou non.

Si vous fournissez n'importe quel type de clé dans votre application, elle sera identique à chaque installation et facile à récupérer à partir de l'application.

+0

Qu'entendez-vous par utilisateurs? Certaines applications n'auront pas d'utilisateurs, ce sera pour stocker des analyses ou d'autres données, donc je cherche une façon plus générique de protéger le backend. J'ai cependant à propos de l'utilisation d'un jeton pour la communication d'avant en arrière, mais tout le monde pourrait simplement demander un jeton. – Mike007

1

Dans Applicasa chaque application a son « espace » Alors que vos applications parlent à la DB (chacun à son propre espace) www.applicasa.com

0

Vous pouvez utiliser un mécanisme d'autorisation tel que OAuth. Ou vous pouvez construire le vôtre. Cela peut être aussi simple que d'avoir un jeton/clé secret. Et vous pouvez le garder aussi simple ou vous pouvez commencer à le rendre plus complexe (c.-à-d. Générer des hachages avec le jeton et les paramètres afin de ne pas envoyer le jeton lui-même mais un hachage calculé avec le jeton et les paramètres de requête, etc.

Cependant, il n'y a aucun moyen de garder les jetons api secrets. Parce qu'un attaquant peut décompiler votre application, introspectez le code et trouvez votre clé API. Vous pouvez vérifier certains en-têtes http, mais simuler les en-têtes de requête est super simple. Vous ne pouvez donc pas garantir que les demandes sont effectuées à partir de l'appareil iOS. Ce serait génial si Apple fournissait un moyen de stocker quelque chose pendant le processus d'installation qui est signé avec votre certificat de développeur ou quelque chose comme ça afin que vous puissiez garder quelque chose de réellement secret que vous pouvez faire confiance au périphérique iOS. Mais à la fin, quelqu'un pourrait juste flairer le trafic réseau pour casser votre système d'autorisation.

Vous pouvez donc faire des choses très complexes, mais vous ne pouvez pas garantir que les demandes sont toujours faites depuis votre appareil.

Questions connexes