我知道這個問題以前曾以各種形式提出過。但是,我不在尋找「使用https」的答案。我已經在使用HTTPS,而且我並不擔心有效負載傳輸的敏感性。但是,我正在使用的iPhone應用程序正在與我創建的REST API(我有應用程序和服務器的控制權 - 因此,歡迎任何建議)交談。在iPhone應用程序中使用REST API時的安全性
我用於身份驗證的OAuth2用戶協議,這意味着,我的「API密鑰」是一個客戶端ID和客戶端祕密的組合僅需要被髮送到獲取access_token
。之後,使用access_token
和包含請求主體的HMAC的標頭(使用客戶機密鑰作爲密鑰)將所有請求發送到服務器。這個添加的唯一原因是,有人不能通過一個access_token
進行API請求。
我正在與之交談的API將在我發佈應用程序時公佈。所以我不一定擔心其他人能夠對其進行API調用。
我關心的是:
- 人們能夠使用我的應用程序的客戶端憑證(這意味着我無法檢測在服務器端,它不是來自我的應用程序調用API )
- 人們能夠濫用額外的範圍,我的客戶端ID將讓他們有和傳統的API用戶將不必
我的猜測是,有沒有真正解決這個問題的解決方案(除使用UIWebView並製作一個glor ified webapp),但我想我會問在這裏無論如何。
如果需要應用程序使用,你們都可以考慮保護客戶端ID /客戶端密碼的方法嗎?
你是說oauth對你的應用程序不夠安全嗎? oauth客戶端必須簽署所有參數,因此只有具有訪問令牌和祕密的客戶端才能包含一些參數_and_正確簽名。 – danh 2013-03-07 16:07:35
@danh實際上,OAuth2不會簽署參數(這是OAuth1的一部分,它違反了該規範)。但是,不,我只是用相對微小的努力來說,有人可以對我的應用程序進行逆向工程,並獲得我的客戶ID和祕密,並將API作爲我的應用程序發出請求。 – 2013-03-07 16:12:08
如果您可以(某些人)授予任何購買iPhone應用程序唯一標識符的人,可以將其鏈接到單個用戶的憑據。有了這些,你就可以將已經獲得iPhone應用程序的客戶與另一個來源的客戶區分開來。 – AardvarkSoup 2013-03-07 16:48:02