2013-03-07 63 views
6

我們正在開發Rails中的JSON REST API以供我們也在開發的Android應用程序使用。有沒有什麼方法來保護API,使其只能被我們特定的Android應用程序使用?保護REST API以供Android客戶端使用

API是隻讀的,不涉及任何類型的用戶相關或其他敏感信息。但是在合理的範圍內,我們希望防止濫用並將其限制僅限於我們的應用。

我可以輕鬆地添加認證令牌的API並與應用分發,但:

  1. 我們很可能需要在移動API到SSL,如果我們使用基本身份驗證。
  2. 對於一個堅定的人來說,打開Android APK二進制文件並揭示auth令牌可能是微不足道的。

這種情況看起來類似於在商店櫃檯上張貼他們的WiFi密碼的咖啡館 - 你必須把祕密傳遞給每個想要使用你的服務的人,所以幾乎沒有意義把它放在第一位。

什麼是最合理的方法?

回答

6

想要保護一個可能公開的未公開的API,以便它只能被一個應用程序訪問,這意味着您想阻止人們使用您的API,它們是使用您的API的確定的

含義的人誰會盡可能使用您的API。

如果不是這種情況,那麼添加Auth令牌並不是微不足道的,但對於偶然發現API的人來說至少是一個大墊腳石。實施這個並不是一個非常糟糕的主意。

由於此身份驗證不是基於用戶的,而是基於應用程序的,您不希望身份驗證依賴於用戶輸入。該請求必須純粹由應用程序完成。

無論如何你必須這樣做(添加硬編碼標記)。只有你讓有決心的人非常難以發現訪問和請求令牌以及方法。

這取決於具體情況,但我會選擇SSL和硬編碼標記。

一些額外的安全性:

  • 發行的訪問令牌只需要令牌定期發送 請求的應用程序。意味着較少機會人攔截 硬編碼的請求令牌,但是會有一個基於會話的訪問令牌,該令牌會在 過期。也許只需要爲每個應用程序安裝一次。
  • 在通過無線發送該請求令牌之前對其進行編碼。含義 人們必須反編譯你的應用程序。
  • 混淆代碼(使其更難以反編譯)。