2015-08-16 191 views
0

我有兩個有關安全問題的問題。Python身份驗證和HTTP cookie處理

簡介:我正在開發一個命令行客戶端,它使用Curl與服務器(就緒產品,不會影響服務器的代碼)進行通信。服務器需要認證:用戶名和密碼(純文本)。所有請求均使用HTTPS進行。

我相信使用HTTP cookie是一個很好的解決方案:客戶端只會驗證一次,對於另一個請求可以使用cookie。

首先:驗證實現。將用戶密碼存儲在普通的python變量中安全嗎?我的意思是腳本運行時可以通過第三方讀取嗎? (在同一臺機器上可能有很多用戶,在同一個OS帳戶上,每一個用戶都有一個用戶名和密碼[用於客戶端 - 服務器授權],應該保持祕密)

第二:你會有一些關於cookie的提示存儲?加密文件或類似的東西?

我正在使用Python 2.6。

+0

你能否描述一下你的架構?作爲一個經驗法則,當談到身份驗證安全性時,如果我沒有足夠的經驗,我總是會去圖書館。 同樣,當涉及到cookie處理時,爲什麼要在開箱時使用Django來解決問題,cookies和身份驗證(我確信有包或者可以實現你的命令行通過一個休息界面或類似的東西)。 –

+0

嘿zom-pro!當然,但我正在開發一個沒有網頁(通常是圖形界面)的CLI工具。我的請求正在使用REST。你想知道關於建築的什麼細節? – Konrad

回答

1

你的假設是正確的。只要用戶不能訪問彼此的主目錄,就不需要進一步隱藏cookie。您的設計是安全的。此外,由於您正在開發CL工具,因此您可以簡單地使用包含認證信息的netrc-like配置文件(可能是.netrc本身),忘記cookie管理。

EDIT許多用戶訪問一個帳戶:

我會考慮改變這一點。但是,在您的約束條件下玩,我建議您創建一個登錄和註銷機制,該機制會生成並返回僅對一個會話有效的身份驗證令牌。

appname login 

CLI將從用戶名和密碼提示。如果後者有效,則服務器以一個有效的字母數字序列回覆一個會話。客戶端將它保存在一個臨時文件中並用於後續使用。

appname use 

最後,

appname logout 

這將令牌無效的,並刪除該文件。

+0

感謝您的回答!在我的情況下,用戶可以訪問相同的操作系統帳戶,但他們在訪問服務器資源的意義上有不同的帳戶。 – Konrad

+0

本貝魯特,你是對的。但是,我的客戶端不會維護會話。如果你想提出請求 - 你的第一個會話以服務器回答結束(我知道這很奇怪,但在我的情況下,它是一個必須服務器的REST API)。另一個請求是另一個會話...仍然如何存儲令牌?它可以是一個HTTP cookie嗎?它應該被加密嗎? – Konrad

+0

我不明白這些限制。它是您無法修改的客戶端或服務器嗎? –