我们正在使用jQuery Mobile和Phonegap来制作iOS& Android应用程序将在两家商店中展示。这些应用程序将使用Javascript和典型的ajax / JSONP调用从远程服务器获取数据。
我们希望以某种方式使用我们的后端验证应用程序。通常你可以限制从特定域访问远程api,我们不能这样做,因为文件将存储在本地并使用file://协议,这就是为什么我们使用JSONP来避免相同的源策略问题
我们打算使用密码+时间戳+ deviceID生成一个身份验证字符串,对其进行加密,然后执行相同的服务器端。我们很快就意识到人们将能够轻松地访问我们的javascript文件,并且javascript混淆并不是我迄今为止所阅读的100%安全。
关于如何限制API访问仅限于应用程序的任何想法,或者只是我们尽我们所能并让我们的API保持相当开放的情况?
谢谢。
答案 0 :(得分:1)
Phonegap作为专用应用程序项目分发。这允许你修改它添加一个新的api函数,它将被编译并且有点安全。
api中的新函数将计算给定种子的哈希并返回它。 然后,您需要在服务器端使用相同的代码。
种子的哈希和在本机应用程序代码中小心嵌入的盐就足够了。
二进制文件可以进行模糊处理,以防止人们发现盐,并且可能会出现进一步的并发症 - 例如。选择盐作为由种子决定的长串的一部分。
答案 1 :(得分:0)
JavaScript混淆是0% secure;这是一种威慑,而不是一个真正的解决方案。您可以通过反向器运行任何缩小/封闭的JavaScript并获取完整代码。此外,任何人都可以毫不费力地伪装PhoneGap API对设备信息的响应,因此唯一可靠的方法是使用app容器中的证书来从应用程序内部传递初始握手。 iPhone和Android方法的细节各不相同,但这是解决问题的唯一真正解决方案。您可以使用其他方法,例如查看源IP并确保它们来自移动提供商,但这是一个不断变化的目标。
答案 2 :(得分:0)
我认为这是混合应用程序的捕获22。可能最好的办法是使用由本机代码生成的令牌。有一些教程向您展示如何在本机代码中创建自定义功能,并将其传递回JS。我先检查一下。