2011-04-05 22 views
2

我們使用jQuery Mobile和Phonegap生成iOS應用程序,該應用程序將顯示在兩個商店中。應用程序將使用Javascript和典型的ajax/JSONP調用從遠程服務器獲取數據。如何驗證它只是我們的phonegap應用程序訪問我們的服務器端API?

我們希望以某種方式驗證與我們的後端應用程序。通常情況下,您可以限制從特定域訪問遠程API,但我們不能這樣做,因爲這些文件將存儲在本地並使用file://協議,這就是爲什麼我們使用JSONP來避免相同的原始策略問題。

我們打算用passphrase + timestamp + deviceID產生一個認證字符串,加密它然後做同樣的事情服務器端。我們很快意識到人們可以很容易地訪問我們的JavaScript文件,而且從目前爲止閱讀的內容來看,JavaScript混淆並不是100%安全的。

關於如何限制API訪問權限的任何想法只是爲了應用程序,還是隻是盡我們所能,讓我們的API公開?

謝謝。

回答

1

Phonegap作爲專用應用程序項目發佈。這可以讓你修改它添加一個新的API函數,將被編譯和安全。

api中的新函數將計算來自給定種子的哈希值並返回它。 然後你需要在服務器端的相同的代碼。

在本地應用程序代碼中仔細嵌入種子和鹽的散列就足夠了。

一個二進制文件可能會被混淆足以防止人們發現鹽,並且可能會使用更多的複雜問題 - 例如。選擇鹽作爲種子確定的冗長字符串的一部分。

0

JavaScript混淆是0% secure;這是一種威懾力,而不是真正的解決方案。您可以通過反向器運行任何縮小/隱藏的JavaScript,並獲得完整的代碼。此外,很少有人可以僞造PhoneGap API響應設備信息,因此唯一可行的方法是使用應用程序容器中的證書來傳遞應用程序中的初始握手。 iPhone和Android方法在細節上都有所不同,但這是唯一真正解決問題的方法。您可以使用其他方法,例如查看源IP並確保它們來自移動提供商,但這是一個移動目標。

0

我認爲這是混合應用程序的catch22。可能你最好的選擇是使用由本地代碼生成的令牌。有一些教程向您展示瞭如何在本機代碼中創建自定義功能,並將其傳遞迴JS。我會先在那裏檢查。

相關問題