2012-04-24 101 views
3

我有一個iPhone應用程序使用PHP的HTTP REST API。HTTPS協議與REST API Webservices相關嗎?

從這個API的一些Web服務被固定在HTTP請求憑據的用戶身份驗證,但我希望通過提供完全加密的請求數據,以避免「中間人」的攻擊。

我不是很熟練的安全問題,我找不到任何明確的回答我的問題的任何地方:

是HTTPS相關的無狀態REST API?

從我的理解,HTTPS做兩件事情:

  • 加密會話
  • 證明給客戶端,他所談論到的服務器是安全

所以乍一看沒有響應我的需要,即加密我的服務器和應用程序之間的數據,因爲API不使用會話。但我仍然有疑問。

有人能告訴我嗎?

我的其他解決方案將通過公鑰/私鑰系統來加密請求數據。它會更合適嗎?

謝謝!

+0

HTTPS不兩兩件事: - 加密連接 - 證明給客戶,他在談論到服務器是誰的服務器說,他是< - 固定爲您 – PeeHaa 2012-04-24 17:38:27

+1

「我其他的解決方案將通過加密數據的請求公鑰/私鑰系統「。聽起來像一個很好的計劃。爲什麼不實施SSL(HTTPS);-) – PeeHaa 2012-04-24 17:39:45

回答

2

是的。 HTTPS與應用程序無關,它是一種隧道協議。儘管TLS本身就是一種有狀態協議,但HTTP部分卻不是。

就像如果你使用的是VPN,你仍然可以擁有一個基於REST的應用程序。 TLS只需設置並自動爲每個連接撕下隧道。

這就是說,有在利用HTTP流水線的各方面的價值和HTTPS以提高吞吐量超過TLS連接,但是這是一個性能優化方面無關的應用程序本身。

+0

Thanks Will Hartung,你解釋了我到底不清楚什麼。我感覺HTTPS有狀態部分可以在每個請求上重置,但我完全不確定。 – Bedu33 2012-04-24 20:53:37

2

HTTPS是非常相關的,是的,這是因爲你提到的兩點。你知道嗎OAuth 2實際上強制執行HTTPS?

做所有的加密自己可能是一種選擇爲好,但您失去API易於使用的部分。

大多數人在中間人的「簡單」的HTTP請求攻擊涉及竊取的憑證和僞造的請求,但他們也可以讀取數據的發送和接收。如果您的問題與數據不可讀,請使用HTTPS。如果假請求是唯一的問題,那麼認證協議(如OAuth 1(不是2))就足夠了。

+1

不確定你所說的「自己進行所有加密」的含義,但這聽起來像個不好的主意。 – PeeHaa 2012-04-24 17:42:55

+0

@RepWhoringPeeHaa正如問題所述,我指的是用公鑰/私鑰系統手動加密數據。 – 2012-04-24 17:44:24

+0

啊哈。 Evertime我聽到有人建議嘗試自己做加密我傾向於觸發快樂。而且我不是在談論贊成票triggerhappy :) – PeeHaa 2012-04-24 17:45:32

0

如果你不想實現SSL,你可能想看看http://www.jcryption.org/我不知道它是否可以在無狀態環境下工作,但可能值得一試。它基本上是一個jquery插件,負責爲正在傳輸的數據創建密鑰對關聯。可能只能用於表單提交。我們曾經使用它來加密我公司的登錄憑證。

+0

JavaScript加密通常是一個壞主意:http://www.matasano.com/articles/javascript-cryptography/ – Bruno 2012-04-24 23:48:48

0

肯定要用到,HTTPS如果數據是敏感的 - 它在加密是你在找什麼傳輸層。正如已經指出的,oAuth 2.0基本上要求它。您可以通過在oAuth 1.0中使用散列/簽名來避免中間人,並避免使用SSL,但是身體仍然清晰無誤(您已經避免在明文中發送API憑證,而不是在主體中發送API憑證)。