2010-07-06 9 views
2

Je ne sais pas beaucoup sur ce genre de choses alors s'il vous plaît excuser le NOOBnessiPhone requête HTTP sécurité

J'envoie une requête HTTP à un serveur et je veux que le serveur de savoir que la demande est authentique, donc J'ai un p12 avec un certificat et une clé (pré-faite par le serveur) fourni avec mon application que j'extrais et que j'utilise comme un identifiant lorsque j'envoie ma requête au serveur, et que je reçois un défi.

Mais je me demande comment c'est sécurisé? Mon mot de passe pour décrypter le p12 est dans mon code et donc cette chaîne ne peut-elle pas être vue par quelqu'un qui fend mon application binaire? Si oui, ne pourraient-ils pas décréter le p12 et l'utiliser pour faire une demande malveillante à mon serveur?

Merci

+0

Surtout un duplicata de http://stackoverflow.com/questions/3130969/securing-web-api-access/ – sarnold

Répondre

1

Avez-vous pensé à utiliser HTTPS avec authentification certificat client? Cela réglerait définitivement votre problème d'authentification, mais je ne suis pas sûr de savoir comment cela fonctionne dans l'iPhone. (Safari a des problèmes avec la façon dont les certificats clients sont choisis, par exemple.) Cela ferait l'authentification au niveau du transport (TLS, sous HTTP).

Si vous voulez faire cela au niveau du message (dans HTTP), vous pouvez également utiliser un résumé que vous signez avec la clé privée dans l'en-tête. Il existe déjà un en-tête standard pour les résumés (Content-MD5) pour les résumés, mais je ne recommanderais pas MD5 en raison des faiblesses découvertes récemment. Essayez SHA-1 ou plus peut-être. Ces relevés ne seront pas signés, vous aurez donc besoin d'un en-tête supplémentaire pour le signer (par exemple X-Content-RsaWithSha1), et peut-être un autre pour envoyer le certificat si le serveur ne sait pas à quel certificat s'attendre à l'avance. Vous devrez également prendre en charge la lecture et la vérification de ces en-têtes personnalisés côté serveur.

Le HTTPSec specification traite de la sécurité au niveau des messages au niveau HTTP, bien que je ne connaisse aucune implémentation iPhone. En ce qui concerne la sécurité du fichier p12, si votre application a l'intention de l'utiliser, vous devrez en quelque sorte expédier son mot de passe s'il est inclus dans l'application, de sorte que le binaire serait également révéler ce mot de passe et donc la clé privée.