Web applications 如何验证它';这只是我们的phonegap应用程序访问服务器端api?

Web applications 如何验证它';这只是我们的phonegap应用程序访问服务器端api?,web-applications,cordova,jquery-mobile,Web Applications,Cordova,Jquery Mobile,我们正在使用jQuery Mobile和Phonegap制作一款iOS和Android应用程序,将在两家商店中展示。这些应用程序将使用Javascript和典型的ajax/JSONP调用从远程服务器拉入数据 我们希望以某种方式通过后端对应用程序进行身份验证。通常,您可以限制从特定域访问远程api,我们不能这样做,因为文件将存储在本地并使用file://协议,这就是为什么我们使用JSONP来避免同源策略问题 我们将使用密码短语+时间戳+设备ID生成一个身份验证字符串,对其进行加密,然后在服务器端执

我们正在使用jQuery Mobile和Phonegap制作一款iOS和Android应用程序,将在两家商店中展示。这些应用程序将使用Javascript和典型的ajax/JSONP调用从远程服务器拉入数据

我们希望以某种方式通过后端对应用程序进行身份验证。通常,您可以限制从特定域访问远程api,我们不能这样做,因为文件将存储在本地并使用file://协议,这就是为什么我们使用JSONP来避免同源策略问题

我们将使用密码短语+时间戳+设备ID生成一个身份验证字符串,对其进行加密,然后在服务器端执行相同的操作。我们很快意识到,人们将能够很容易地访问我们的javascript文件,而javascript模糊处理并不是100%安全的

关于如何将API访问限制在应用程序中,或者只是尽我们所能让API保持开放状态的一个例子,有什么想法吗


谢谢。

JavaScript混淆是;这是一种威慑,而不是真正的解决办法。您可以通过反向器运行任何缩小/禁用的JavaScript,并获得完整的代码。此外,任何人都不费吹灰之力就可以伪造PhoneGap API对设备信息的响应,因此避免这种情况的唯一可靠方法是使用应用程序容器中的证书从应用程序内部传递初始握手。iPhone和Android的方法在细节上各不相同,但这是唯一真正解决问题的方法。您可以使用其他方法,例如查看源IP并确保它们来自移动提供商,但这是一个移动目标。

Phonegap作为专用应用程序项目分发。这使您可以通过添加一个新的api函数来修改它,该函数将被编译并且有点安全

api中的新函数将根据给定的种子计算哈希并返回它。 然后在服务器端需要相同的代码

在本机应用程序代码中仔细地嵌入一个散列种子和一个盐就足够了


二进制文件可能会被混淆到足以阻止人们发现salt,而且你还可以使用更复杂的方法-例如,选择salt作为种子决定的长字符串的一部分。

我认为这是混合应用程序的一种catch22。可能您最好使用由本机代码生成的令牌。有一些教程向您展示了如何在传递回JS的本机代码中创建自定义功能。我先去那里看看