【问题标题】:Secure communication between django server and iphone appdjango 服务器和 iphone 应用程序之间的安全通信
【发布时间】:2010-12-06 04:54:24
【问题描述】:

我正在编写一个 iPhone 应用程序,当用户与之交互时,它需要向服务器发送少量信息(每次两个字符串,每个字符串少于 128 个字符,而且这种情况不会太频繁)。我希望对这些信息保密,因此我认为需要某种加密或安全连接。

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: iphone django https lighttpd security


    【解决方案1】:

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

    Setting up SSL for Lighttpd/Django

    如果我没看错,该设置允许您的服务器响应 https 和 http 请求 (?) 然后,如果您的整个应用程序不会是 https,那么 SSL Middleware 可以帮助将一些路径配置为 ssl,而另一些则不是。

    【讨论】:

      【解决方案2】:

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

      我只能从我们的 Rails 应用程序和 nginx 说话。我从 GoDaddy 购买了 SSL 证书(非常便宜),并且 nginx 设置为在发送内容时动态加密内容(Rails 本身不这样做)。在 iPhone 上 ASIHTTPRequest 将负责解密数据。所有其他层不应该关心加密,你可以发送任何你想要的。

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-10-23
          • 1970-01-01
          • 2011-02-26
          • 2015-04-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多