2014-01-13 77 views
0

我已经编写了一个简单的Django网络服务,它提供了一个包含JSON信息的iOS应用程序,其中包含下载链接。 我不介意JSON信息是明文,但是当用户登录时,我希望他用他的用户名和密码登录,然后他可能会为未来的请求获取某种密钥,我知道这可以被嗅出来。对于第一次互动,我如何保护密码和用户名不被明文和嗅探?使用安全连接登录到Django网络服务

我决定要使用对称加密来加密我的密码,并在客户端和服务器上都有该密钥。 (是的,我知道如果有人遇到二进制黑客攻击我们的应用程序和嗅探客户数据包的麻烦,他将能够以明文形式获取密码,但这不是一个可能的问题)。

我想使用某种加密方法,我可以在iOS中轻松完成,而不是在我的django服务器中解密。任何人都有关于如何做到这一点的建议?

回答

0

如果你想加密你的django服务器和客户端之间的通信,那么你可以使用安全的HTTP而不是普通的旧HTTP。这在django之外完成,并在Web服务器级别进行配置。例如,如果您的django应用程序由像gunicorn或uWSGI这样的WSGI服务器运行,而该服务器由nginx处理(这是一种常见设置),那么您将配置nginx服务器以仅接受安全HTTP请求并转发任何标准http请求到https。通过这种方式,您可以确保在发送之前,客户端发送到服务器的所有内容都在浏览器中加密。类似的设置是用Apache完成的,尽管我个人从未使用Apache和django。

+0

我认为设置Gunicorn和nginx +购买SSL并且主机支持它对我的需求有点多,我的web服务是完全开放的,它不是那么高的风险,只是发送密码明文是坏习惯特别是如果我的用户可能使用相同的密码进行其他操作。 –

+0

我没有看到任何其他可行的选项。任何人都可以看到客户端添加的任何加密模拟。我不知道除SSL之外的其他解决方案。我看到GoDaddy出售6美元的SSL证书。他们可能不会得到尽快的验证,但它可能足以满足您的简单需求。 – elynch

0

由于OP认为HTTPS不是可行的选项,因此对初始密钥创建的修改可能是一种选择。