2013-07-30 74 views
3

因此,我創建了一個iOS框架,該框架將成爲開發人員將添加到其項目的靜態庫,當他們在我們的網站上創建帳戶時,我想給他們一個獨特的令牌,他們把他們的應用程序使用我的靜態庫。使用框架API令牌從iPhone驗證請求

對於iOS開發的,想TestFlight,你註冊,獲得一個應用程序ID,然後運行[TestFlight takeOff:<#some-key#>];

我想(通過HTTPS)進行身份驗證,該框架可通過我的REST Web服務請求。

有什麼我可以做的,以防止人們「闖入應用程序代碼」,並竊取開發人員api令牌並使用它來提出請求?至少就目前而言,我的API端點將不會公開信息。我無法驗證用戶,因爲它是一個框架,這將是一個糟糕的用戶體驗。

問題是,有什麼我可以做,以防止這種行爲?我應該關心嗎?我最終會根據X請求向開發人員收費,所以我希望能夠對此進行驗證,所以我們沒有垃圾郵件發送者爲開發者提供賬單。

其他iOS框架如何處理?

任何設計理念和批評歡迎。

回答

1

我不確定你想要做什麼是有可能的。如果文本在客戶端代碼中,則可以將其拉出。由於證書也位於客戶端二進制文件中,因此SSL固定在這裏不會真正幫助您。

您可能能夠關閉的一種方法是使用開發人員的身份驗證系統。假設用戶登錄到開發人員的認證系統,然後在服務器端爲該用戶生成一個短期密鑰。然後可以傳遞客戶端代碼(通過SSL固定)短期密鑰並使用它來進行API調用。然而,這要求開發人員實際上擁有安全的身份驗證系統,並且無需SSL固定,他們很容易受到簡單的中間人攻擊,這將揭示短命的關鍵。

您可以嘗試通過在您的端部調節API調用或試圖使用每個應用程序啓發式來估計正常的API使用情況。任何超出標準的將被標記爲潛在的黑客基礎。這可能足以清除大多數想成爲黑客的人。真正的黑客將會學習節流,並且很好的規避它...

最安全的做法是讓它成爲服務器端庫而不是客戶端庫。不過,這當然不是一個超級性感的解決方案。並不是所有的應用程序都有一個服務器端組件......即使他們這樣做了,一旦開發人員的服務器遭到破壞(即被垃圾郵件或黑客入侵等),它就再次成爲遊戲的一部分。但是,最終,服務器端解決方案的好處在於,您至少不易受到攻擊,並且承擔了將系統保護在開發人員身上的責任。

這裏真正缺乏的是某種形式的基於Apple的驗證,用於源自Apple設備的網絡呼叫......但這可能不會發生。 :)

+0

謝謝,這是我害怕的。服務器端對我來說不是一個真正的選擇。 – mkral