Comme indiqué précédemment, il n'y a pas de sécurité à 100 % possible. Mais il existe plusieurs solutions qui mises ensemble donnent une grande sécurité.
HTTP
Comme vous le soulignez, c'est une partie importante , car elle empêche de renifler.
Séances
Utilisez des sessions et n'autorisez aucune requête sans session valide (sauf la première, qui doit authentifier l'application).
Empreinte digitale
Vérifiez l'agent utilisateur et définissez des en-têtes http supplémentaires pour obtenir une empreinte digitale unique pour votre application. ( Quelqu'un pouvait toujours renifler, mais il avait besoin d'utiliser curl ou similaire. )
Masquer les demandes
Créez votre chaîne de requête et appliquez une fonction de hachage. Le serveur doit implémenter la fonction inverse. ?43adbf764Fz au lieu de ?a=1&b=2
Crypter
Cela va encore plus loin. Utilisez un secret partagé pour calculer un hachage. Sur le serveur, répétez la même chose. C'est déjà une sécurité forte. Pour casser, il faut désosser votre application.
Utiliser un secret partagé unique
Vous dites que c'est une application pour iOS. Lors de l'installation, un jeton unique est généré par iOS. Demandez à votre application d'enregistrer ce jeton auprès de votre serveur. Ainsi, vous disposez d'un secret partagé fort unique pour chaque installation, et il n'y aurait aucun moyen de pirater votre application Web.