2012-10-16 49 views
2

我正在爲iOS應用程序設計REST服務。我想知道如何使RESt服務安全,以便只允許從iOS應用程序發出的請求?保護沒有身份驗證的REST服務

我想使用一個共享的祕密,但仍然有在那裏,如果你檢查的要求,這是暴露出來的問題。

另一種方法是使用不是所需解決方案的OAuth。我希望能夠在實際請求中進行身份驗證,而不是在多個請求之間交換令牌。

我能想到的唯一解決方案是基於時間的加密。共享密鑰在時間基礎上被加密,在服務器上,請求僅在特定持續時間內有效。

回答

0

雖然這確實是可能的解決,最好的辦法是使用某種類型的登錄機制,但這並不能阻止有人企圖欺騙與認證包含的應用程序。

你不能信任客戶端,但如果你使用類似的OAuth,你至少可以阻止人們嘗試。如果應用程序使用應用程序內購買,則可以將帳戶認證爲有權訪問,然後遵循該路線。但除此之外,可以說沒有任何「完美」的解決方案。如果你對像HTTPS的SSL保護的協議將它們發送

3

您的請求不會是監聽器可見(和使用服務器證書,以防止人在這方面的中間人攻擊),所以共享祕密燒入該應用程序可以工作。

當然,如果有人真的想要,他們可以反向工程您的應用程序查找存儲中的祕密。如果你正在構建與人們的銀行賬戶相關的東西,那就不要麻煩了。如果您只是想添加一小部分的保護措施,以防止您的服務被瑣碎的黑客攻擊或DDOS攻擊,那麼這聽起來像是一種合理的方法。

+0

如果您購買的是已知由iOS的被信任的SSL證書,那麼你可以只安裝在服務器上的證書,並從iOS的連接「將只是工作」 https的。這讓生活變得更加簡單,正如Brian Kelly所說的,你只需要擔心有人倒過來找到祕密。 –