J'écris une application iPhone qui doit envoyer de petits bits d'informations (deux chaînes de moins de 128 caractères chacune, à la fois, ce qui n'arrive pas trop fréquemment) sur un serveur lorsque les utilisateurs interagissent avec elle. J'aimerais que ces informations restent confidentielles, je pense donc à une sorte de cryptage ou de connexion sécurisée serait nécessaire. P>
Ma question concerne le côté serveur des choses. Le serveur L'application iPhone doit communiquer avec Django et est en cours d'exécution sur LightTPD. Quel est le moyen le plus approprié (ou quelle est la voie standard) de faire cela. Je pensais https, que je connais sur l'iPhone, je peux utiliser ASIHTTPQUEST pour faire une demande postale, mais je ne sais pas ce qu'il faut sur le côté serveur. Ai-je besoin d'un certificat? Comment les données sont-elles cryptées / sécurisées? Y a-t-il des modules Django pour aider avec cela? Dois-je faire quelque chose pour configurer Lightpd? P>
quelque chose comme XML-RPC ou JSON-RPC sera-t-il plus simple? Est-il possible d'obtenir une telle communication? À quel niveau cela se produirait-il? P>
Toute aide serait très appréciée. P>
3 Réponses :
hmm On dirait que cela pourrait être ce que vous êtes après, l'avez-vous vu? P>
Configuration SSL pour LightPD / Django p>
Si je lis ce droit, cette configuration permet à votre serveur de répondre aux demandes HTTPS et HTTP (?) Ensuite, si votre application entière ne sera pas https, il y a ce SSL Middleware pour aider à configurer Quelques chemins comme SSL et certains non. P>
Si vous utilisez HTTPS (SSL) du côté du serveur, cela n'aurait pas d'importance si vous utilisez XML-RPC ou JSON-RPC. Toutes les données que vous transférez seront cryptées et sécurisées. P>
Je ne peux parler que de notre application Rails et Nginx. J'ai acheté un certificat SSL de Godaddy (très bon marché) et Nginx est configuré pour chiffrer le contenu (les rails ne le font pas elle-même) à la volée lorsqu'il l'envoie. Sur l'iPhone Asihttprequest sera responsable de déchiffrer les données. Toutes les autres couches ne devraient pas être préoccupées par le cryptage, vous pouvez envoyer tout ce que vous voulez. P>
Vous pourriez également être en mesure d'utiliser un certificat auto-signé. Nous avons décidé d'utiliser Godaddy car nous utilisons également le certificat SSL pour navigateurs réguliers et ceux-ci montrent un message d'avertissement à l'utilisateur s'ils rencontrent un certificat auto-signé, ce qui effraie évidemment les gens. P>
Utilisation de XML-RPC ou JSON-RPC ne signifie que pour encapsuler vos données dans une forme facile à transporter. Votre application iPhone peut transformer les données d'objectif C à l'aide de l'un de ces formats et que votre application Django Server peut transformer les données en arrière dans des objets Python. P>
NI Aucun de ceux-ci n'a rien em> à faire avec la sécurité. P>
Création d'une connexion HTTPS (SSL) chiffre toutes les communications entre le client (iPhone) et le serveur (Django). Vous devrez obtenir un certificat pour le côté serveur. Cela indique au client que le serveur est celui qui prétend être. Votre prochaine ligne de recherche sur ce chemin devrait être sur la manière de configurer LightPD pour gérer le trafic SSL. Une fois que LightPD négocie la communication SSL, votre application Django fonctionnera comme pour le trafic non sécurisé. P>
C'est votre meilleur choix. P>
Si, pour une raison quelconque, vous ne voulez pas utiliser SSL, vous pouvez trouver des bibliothèques de cryptage fortes pour les deux extrémités de la communication. L'application iPhone pourrait crypter les données, l'envoyer via une connexion HTTP et l'application Django pourrait la déchiffrer. Par exemple, le Pycrypto Python Bibliothèque implémente des chiffres de cryptage forts tels que AES et Blowfish . Vous pourrez peut-être trouver une implémentation de l'un de ces chiffres écrits dans l'objectif c. P>
Avez-vous remarqué que cela devient de plus en plus complexe? P>
aller avec SSL. C'est la façon dont la sécurité est faite pour la communication HTTP. P>