繁体   English   中英

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

[英]Secure communication between django server and iphone app

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

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

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

任何帮助将非常感激。

使用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的通信的安全性方式。

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

为Lighttpd / Django设置SSL

如果我读得正确,那么该设置允许您的服务器回答https和http请求(?)然后,如果您的整个应用程序不是https,那么这个SSL中间件可以帮助将某些路径配置为ssl而不是。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM