2013-10-29 51 views
-1

我們正在開發用於IOS的應用程序。如何識別IOS中的用戶

有無論如何我可以檢查設備發送給我的第一次連接到我的服務器的「identifierForVendor」實際上是否有效?

如果沒有辦法,我該如何確保有人不只是發送POSTS到我的服務器,所以使我創建的設備數據庫對象不存在?

我發現的唯一安全的方法是:

1 - 使應用程序要求一個設備令牌到APNS 2-發送它這是我的第一個服務器連接。 3-使用APNs反饋服務進行檢查 4-如果令牌正常,請創建設備數據庫對象並從此處繼續。

每次有人下載應用程序時,蘋果都應該讓你知道蘋果和你的服務器之間的通信中的一些設備供應商ID。

謝謝。

+0

會很好跟蹤,但它似乎不是蘋果和你的服務器之間。看到這個一個:http://stackoverflow.com/questions/19460878/api-based-on-user-ip-address/19461599#19461599 –

回答

0

最簡單的解決方案是將「identifierForVendor」附加到您可以從您的應用中識別的內容。例如,如果附加一個字母數字字符串,如下所示:「A1B2C3D4E5F6G7」爲「A1B2C3D4E5F6G7-fromMyApp」,那麼除非用戶有權訪問您的代碼,否則無法知道自定義附加字符串是什麼。

當然還有更復雜的解決方案,如果您真的擔心人們爲了查找字符串而監控來自應用程序的流量。

+0

可能也使它成爲一個公共的API,因爲誰想要關鍵還得它。 –

+0

謝謝。我們已經考慮過這個選擇,但 這不是我要問的。 迄今爲止,通知APNs解決方案已成爲贏家,但它可能會減少從我的用戶收集的數據量或使應用程序變慢。 我想我們可以製作設備對象並將它們標記爲NOT_VERIFIED,然後使用反饋系統來驗證它們。 蘋果給你選擇添加一個URL到你的應用配置是非常容易的,每當有人下載​​它時,它就會用設備應用標識符擊中你。這就是我認爲它存在的原因。 –

0

您是否知道註冊遠程通知會提示用戶是否允許該應用的遠程通知。如果他們選擇否,則不會生成令牌。

此外,他們可以從電線上嗅出令牌。你打算根據他們的令牌跟蹤濫用和阻止用戶嗎?您是否知道某些操作會導致生成新令牌,如重置設備?

您可以生成唯一的ID(UUID)或使用identifierForVendor,並將其存儲在用戶的密鑰存儲區中,然後使用它來按設備進行跟蹤。它仍然是匿名的,重置設備會重置此設置,但如果您要跟蹤濫用者,則可以阻止他們,並且必須重置設備以再次嘗試。這與APN令牌沒有多大區別。它仍然可以被嗅探,他們仍然可以重置它。但至少用戶不必肯定是否允許遠程通知。

如果你發送任何類型的令牌,你應該使用HTTPS(SSL/TLS),而不是保護用戶不受他們的影響(他們仍然可以通過在中間人攻擊中自己的人來嗅探令牌,除非你是驗證服務器的身份),但這是爲了保護人們免受同一網絡上的惡意用戶的侵害。你不想阻止一些無辜的用戶,因爲他們碰巧在公共網絡上使用你的應用程序,並無意中分享了他們的令牌。

當然,如果我們正在談論一個監獄破碎設備,所有投注都關閉。