2014-01-13 76 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不是可行的選項,因此對初始密鑰創建的修改可能是一種選擇。