2012-04-27 123 views
7

在我的情況下,我正在使用Dropbox API。目前,我將密鑰和密鑰存儲在一個JSON文件中,以便我可以對其進行gitignore並將其保留在Github repo之外,但顯然這並不比從安全角度考慮代碼更好。關於保護/混淆Python之前存在很多問題(通常是出於商業原因),答案總是「不要,Python不適合這樣做」。因此,我不是在尋找一種保護代碼的方法,而是一種解決方案,它可以讓我分發我的應用程序,而不會公開我的API細節。我應該如何將API密鑰存儲在Python應用程序中?

+0

將它們作爲加密值填入文本文件中。創建一個私人存儲的加密密鑰,在需要時解密。雖然可能有更好的方式,但這種方式在過去對我很有幫助。 – 2012-04-27 19:46:08

+0

如果有人在他們的計算機上運行該程序,並且該程序使用該密鑰,則會實際披露該密鑰。它不需要一個天才就可以啓動WireShark,讓程序連接,並過濾捕獲連接到Dropbox(或其他一些標準 - 最糟糕的情況下,你要挖掘幾百個數據包)。只是混淆程序不會爲你購買任何東西,因爲你不能改變API密鑰的字符串,或者它對你的程序沒有用處。 – delnan 2012-04-27 20:22:27

+0

@delnan但是API密鑰在HTTP流量中可見嗎? Dropbox通過SSL進行一切操作。我不知道他們是使用GET還是POST變量,或者只是將它們放在HTTP請求的頭文件中。這些事情是通過HTTPS請求加密的,還是僅僅是請求的主體? – espekia 2012-04-29 08:58:48

回答

2

純文本。如果代碼被分發,任何模糊嘗試都是徒勞的。

2

不知道你的情況是否可行。但是您可以通過您託管的代理訪問API。

來自Python APP的請求轉到代理,代理向Dropbox API發出請求並將響應返回給Python應用程序。這樣您的api密鑰將位於您所託管的代理服務器上。訪問代理服務器可以通過您喜歡的任何方式進行控制。 (例如用戶名和密碼)

+0

總的來說,這是一個很好的解決方案,但在我的情況下,我選擇專門使用Dropbox,因爲我既沒有資源也沒有傾向於託管自己的服務器,我只想專注於製作客戶端。 – espekia 2012-04-28 08:14:51

1

有根據您的情況有兩種:

如果你正在爲最終用戶提供一個web應用,只是它託管的方式,你的API密鑰不來披露。因此,將它保存在一個單獨的文件中,並只將其上傳到服務器應該沒問題(只要沒有違反服務器的規定)。任何混淆都不會增加任何實際的好處,它只會給人一種虛假的安全感。

如果您正在爲開發人員或最終用戶的客戶端應用程序開發框架/庫,請他們自行生成API密鑰。

相關問題