2014-09-02 64 views
-2

我正在寫一個API,它將被託管而沒有SSL支持,我需要一種方法來驗證請求。每個客戶端都有不同的ID,但如果請求被授權,那麼任何擁有數據包嗅探器的人都可以僞造請求。是否有可能在不依賴SSL的情況下建立一個安全的系統?沒有SSL的API認證

(我已經包含OAuth的一些想法,莫非是執行?)

非常感謝

+0

爲什麼你不能使用SSL? – ircmaxell 2014-09-02 17:45:52

+0

@ircmaxell我的(免費)網絡主機不允許它。我不打算使用SSL獲得主機。 – 2014-09-02 17:51:07

+0

如果您的* free *虛擬主機不支持SSL,那麼您可能不應該對其上運行任何敏感數據。 – Dan 2014-09-02 18:39:23

回答

2

讓每個客戶端加密簽署其與特定客戶端密鑰請求。驗證服務器上的簽名。

使用密碼學非常簡單。主要挑戰是設置客戶的鑰匙。如果不使用SSL,將很難做到這一點。在關於如何設置客戶端ID的問題中沒有任何信息,所以我不知道它是否足夠安全,以便在此時設置密鑰。

如果您沒有SSL提供客戶端代碼,這也會成爲問題。 但是,嘿,它只是一個你正在創建的API。也許與它交互的代碼是通過HTTPS提供的。或者也許代碼存儲在本地客戶端上。

雖然我覺得很多人都會抱怨這個問題。

+0

謝謝!代碼不是問題,我完全控制客戶端和服務器。如果我要將公鑰/私鑰硬編碼到客戶端/服務器中,那麼只要來自客戶端的傳入消息使用其中一個密鑰進行解碼,它就是一個合法的消息。這將解決關鍵分配問題嗎? – 2014-09-02 21:06:19

+0

是的,如果你可以親自對密鑰進行硬編碼,而不是通過電線發送它們,那麼它應該沒問題。整個事情聽起來更可行,因爲您也可以完全控制客戶。 – guest 2014-09-02 22:13:53