2010-07-08 3 views
3

Je voudrais faire des demandes d'une application iphone à un service web que j'ai construit. Comment puis-je vérifier que les demandes faites au service Web proviennent de mon application iPhone (ou de toute autre source autorisée) et ne sont pas falsifiées?Comment puis-je vérifier l'authenticité des demandes d'une application iphone pour mon service web

J'ai regardé l'authentification de base sur HTTPS mais est-ce que les informations d'identification dans une application sont sécurisées?

Cette question n'est pas vraiment spécifique à l'iphone; J'aimerais savoir comment protéger et authentifier les demandes en général.

Répondre

2

L'authentification peut être affirmée en présentant quelque chose que vous connaissez, quelque chose que vous avez, quelque chose que vous êtes ou une combinaison des trois.

L'iPhone ne dispose pas de scanners rétiniens ou d'empreintes digitales, il n'y a donc pas d'options «quelque chose que vous êtes» disponible.

Les certificats clients fonctionnent bien comme un jeton «quelque chose que vous avez». La plupart des cartes à puce fonctionnent en signant un message avec un certificat intégré. Lorsqu'un certificat est compromis, il peut être placé sur une liste de révocation de certificats (CRL) référencée par les serveurs Web. Évidemment, vous ne voudriez pas mettre le certificat intégré de votre application dans la liste de révocation de certificats - cela refuserait l'accès à tous vos utilisateurs. Au lieu de cela, vous souhaiterez que les utilisateurs téléchargent des certificats individuels sur leur iPhone. Ensuite, il s'agit de surveiller les comportements inhabituels pour trouver les mauvais acteurs et ajouter ces certificats à la liste de révocation de certificats. Deux cadeaux morts seraient des clients qui envoient trop de demandes à la fois ou de trop nombreuses adresses IP différentes en trop peu de temps. Login/mot de passe est un simple jeton «quelque chose que vous connaissez». Comme les certificats, les combinaisons login/mot de passe peuvent être compromises et une surveillance similaire peut être mise en place pour trouver un comportement inapproprié. La différence est compromise les comptes seraient marqués "bloqués" plutôt que ajoutés à une liste CRL.

En exigeant à la fois un certificat client et un identifiant/mot de passe, vous augmentez le niveau d'effort nécessaire pour compromettre un compte.

Bien sûr, vous devez vous assurer que seuls les comptes valides sont ajoutés à la base de données. S'il existe un moyen automatisé de créer de nouveaux comptes et des certificats clients correspondants, ce serveur/processus de création de compte devient le moyen le plus facile pour les mauvais acteurs de créer des comptes viables et non autorisés. Demander à une personne réelle de déconnecter des comptes supprime le processus d'automatisation, mais signifie qu'un employé mécontent ou corrompu pourrait créer des comptes incorrects. Demander à une deuxième personne de contresigner le compte fait qu'il est plus difficile pour une seule personne d'être une menace interne. En bref, assurer une haute intégrité des clients est un processus qui peut être rendu arbitrairement complexe et coûteux.Les outils et les processus que vous décidez de déployer en tant que schéma d'authentification doivent être équilibrés par la valeur de ce qu'ils protègent.

+1

Merci pour la réponse complète et bien écrite –

1

En théorie, si vous voulez que la connexion soit sécurisée, le mieux est que le client signe sa demande en utilisant un certificat. Il y a plusieurs ressources à ce sujet. Recherchez "certificat client" sur Google.

This example from Sun est en Java, mais le concept est similaire quelle que soit la langue.

PS: De toute évidence, cela ne vous empêche pas d'utiliser d'autres méthodes d'authentification telles que les mots de passe, etc ...

PPS: Gardez à l'esprit que si quelqu'un parvient à extraire le certificat de votre application, vous êtes vissé de toute façon ;-). Vous pouvez imaginer un magasin fournissant un certificat individuel à chaque application et invalidant les certificats compromis.

Questions connexes