2011-02-25 109 views
3

我正在開發一個免費的移動應用程序,用於訪問Web服務並定期從其下載一些內容。有沒有針對此授權問題的解決方案?

我不想強制用戶創建一個帳戶來使用此Web服務,它應該可供此移動應用程序的所有用戶使用。

但是,我不希望第三方能夠訪問該Web服務並重新使用它提供的數據。換句話說,只有我寫的手機應用程序應該能夠使用該服務,而不是其他人。

是否有解決此問題的解決方案?

回答

4

我想你可以做這樣的事情:

1)您的應用程序試圖將服務器

2)服務器的第一接入發送一個隨機數/代碼的應用程序

3)應用程序詳細說明它並用你的祕密方法進行轉換(它可以將它與一個祕密密碼合併在一起並用結果做「散列」;「散列」是一個轉換的編碼字符串)

4)應用程序發送散列[編輯:(和原始從服務器獲得的隨機數/代碼)< - 不,最好不要發送原始代碼和編碼字符串:如果攔截,它可能足以讓所有人再次發送它以進入服務...更好將原始字符串保留在服務器某個地方,並等待來自您的應用的散列號END編輯]再次給服務器

5)服務器使用相同的祕密方法來「散列」原始數字(將它與祕密密碼並對結果進行「散列」)並檢查它是否與您的應用獲得的密碼相同。

6)如果它等於...服務器現在知道對於您的Web服務請求是從你的應用程序和批准訪問它...

換句話說

:只是你的移動應用程序和服務器知道如何將隨機數轉換爲「散列」... 有很多樣本來獲取字符串的「散列」,許多語言(php,javaScript ...),所以只是在網上搜索..

+0

謝謝,這有助於。然而,黑客可以反彙編我的應用程序的代碼,並找到我的應用程序的祕密代碼。但是對於我的簡單應用來說,這應該就足夠了 – Behrang 2011-02-25 21:52:27

+0

所以你混淆了你的代碼,要求攻擊者變得更聰明,更有決心。還要考慮是否可以通過監控設備和服務器之間的流量來推斷或簡單提取任何內容。 – 2011-02-25 22:07:32

+0

添加新評論/編輯 – meronix 2011-02-26 08:16:29

1

聽起來好像您需要握手以確保正確的客戶端連接到Web服務。我能想到的最簡單的方法是在安裝服務器之後檢查連接時是否有一個硬編碼/生成的密鑰。

非常類似於CD鍵和現代遊戲,它們檢查服務器是否有有效的密鑰。

相關問題