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

时间:2009-10-13 04:38:04

标签: iphone django https lighttpd security

我正在编写一个iPhone应用程序,当用户与服务器进行交互时,需要向服务器发送少量信息(每个字符串,每个字符串不超过128个字符,并且这种情况不会经常发生)。我希望这些信息保密,所以我想某种加密或安全连接是必要的。

我的问题是关于服务器端的事情。 iPhone应用程序必须与之通信的服务器是用django编写的,并且正在lighttpd上运行。这样做最合适的方式(或标准方式是什么)是什么。我在想https,我知道在iPhone上我可以使用ASIHTTPRequest来做POST请求,但我不知道它在服务器端需要什么。我需要证书吗?数据是如何加密/保护的?有没有任何django模块可以帮助解决这个问题?我是否需要做一些配置lighttpd?

像xml-rpc或json-rpc这样的东西会更简单吗?是否有可能确保此类通信?会发生什么级别?

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:4)

使用xml-rpc或json-rpc只是将数据封装到易于传输的表单中。您的iPhone应用程序可以使用其中一种格式转换Objective C数据,您的Django服务器应用程序可以将数据转换回Python对象。

这些都没有任何与安全性有关。

创建HTTPS(SSL)连接会加密客户端(iPhone)和服务器(Django)之间的所有通信。您需要获得服务器端的证书。这向客户端表明服务器是它声称的那个。您沿着这条路走下一步的研究应该是关于如何配置lighttpd来处理SSL流量。一旦lighttpd协商SSL通信,您的Django应用程序将像非安全流量一样运行。

这是您的最佳选择。

如果由于某种原因,您不想使用SSL,那么您可以为通信的两端找到强大的加密库。 iPhone应用程序可以加密数据,通过HTTP连接发送,Django应用程序可以解密它。例如,pycrypto Python库实现了强加密密码,例如AESBlowfish。您可能能够找到用Objective C编写的其中一个密码的实现。

您是否注意到这种情况越来越复杂了?

使用SSL。这是基于HTTP的通信的安全性。

答案 1 :(得分:1)

嗯,看起来这可能是你所追求的,你见过吗?

Setting up SSL for Lighttpd/Django

如果我读得正确,该设置允许您的服务器回答https和http请求(?) 然后,如果您的整个应用程序不是https,则可以使用SSL Middleware来帮助将某些路径配置为ssl而不是。{/ p>

答案 2 :(得分:1)

如果在服务器端使用https(SSL),则使用XML-RPC或JSON-RPC无关紧要。您传输的所有数据都将加密且安全。

我只能说我们的Rails应用程序和nginx。我从GoDaddy购买了一个SSL证书(非常便宜),nginx设置为在发送时动态加密内容(Rails不会自行执行此操作)。在iPhone上,ASIHTTPRequest将负责解密数据。所有其他图层都不应该关注加密,你可以发送任何你想要的东西。

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