Django服务器和iPhone应用程序之间的安全通信

9
我正在编写一款iPhone应用程序,需要在用户与其进行交互时向服务器发送小量信息(每次两个字符串不超过128个字符,且此类操作并不频繁)。我希望这些信息保持机密性,因此考虑采用某种加密或安全连接方式。

我的问题涉及到服务器端的事情。与iPhone应用程序通信的服务器是使用django编写的,并在lighttpd上运行。最合适的方式(或标准方式)是什么?我想到了https,我知道在iPhone上可以使用ASIHTTPRequest进行POST请求,但我不知道服务器端需要什么。我需要证书吗?数据如何加密/保护?是否有django模块可帮助处理这些问题?我是否需要进行lighttpd配置?

像xml-rpc或json-rpc这样的东西会更简单吗?是否可能保护此类通信?该如何实现?

非常感谢您的任何帮助。

3个回答

4
使用xml-rpc或json-rpc仅是将您的数据封装为易于传输的形式的手段。您的iPhone应用程序可以使用这些格式之一转换Objective C数据,而您的Django服务器应用程序可以将数据转换回Python对象。
这两者都与安全性没有任何关系。
创建HTTPS(SSL)连接会加密客户端(iPhone)和服务器(Django)之间的所有通信。您需要为服务器端获取证书。这向客户端表明服务器是其所声称的人。您在此路径下的下一个研究方向应该是如何配置lighttpd来处理SSL流量。一旦lighttpd协商了SSL通信,您的Django应用程序将像处理非安全流量一样运行。
这是您最好的选择。
如果由于某种原因您不想使用SSL,那么您可以为通信的两端找到强加密库。iPhone应用程序可以加密数据,通过HTTP连接发送数据,Django应用程序可以解密数据。例如,Python库pycrypto实现了诸如AESBlowfish等强加密密码。您可能可以找到Objective C编写的其中一种密码的实现。
您是否注意到这变得越来越复杂了?
选择SSL。这是基于HTTP的通信的安全方式。

1

嗯,看起来这可能是你想要的,你看过了吗?

为Lighttpd/Django设置SSL

如果我理解正确,那个设置允许你的服务器响应https和http请求,对吗? 然后,如果你的整个应用程序不会使用https,有这个SSL中间件可以帮助配置一些路径为ssl,而其他路径则不是。


1

如果您在服务器端使用https(SSL),则无论您使用XML-RPC还是JSON-RPC都不会有影响。您传输的所有数据都将被加密并保密。

我只能从我们的Rails应用程序和nginx说起。我从GoDaddy购买了一个SSL证书(非常便宜),并且nginx设置为在发送内容时即时加密内容(Rails本身不执行此操作)。在iPhone上,ASIHTTPRequest将负责解密数据。所有其他层都不必担心加密,您可以发送任何想要的内容。

您还可以使用自签名证书。我们决定使用GoDaddy,因为我们还将SSL证书用于常规浏览器,如果用户遇到自签名证书,则会向用户显示警告消息,这显然会吓跑人们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接