我正在尝试一些带有phonegap的东西,我有一个关于我无法弄清楚的安全性的问题。
所以我想说我想在db中添加一些内容。我让phonegap在带有vars的服务器上的一个php文件上做一个ajax帖子,这个php文件会将它插入到db中。
但是谁知道这个php文件的位置并且知道它想要的数据可以做一个ajax帖子并插入数据呢?
我正在阅读给php api一个令牌。但我也在阅读它很容易反编译一个phonegap apk所以它不会很难得到这个令牌吗?
那么如何确保服务器上的php文件只接受来自我的phonegap应用程序的帖子?
答案 0 :(得分:1)
你不能。没有办法保证他们只来自你的申请。但是,您可以确保来自应用程序的特定已知用户的任何呼叫。
您有一个不受信任的客户端,在不妥协的情况下无法嵌入秘密。你可以更难,such as encrypting your JS and packaging it encrypted, then relying on Apple's DRM to secure your key,但对于一个模糊地决定不会阻止他们的人。您的AJAX端点存在,并且由于不安全的客户端需要以某种方式与之通信,因此始终会有一种方法来发现客户端的秘密。
但是,通常这不是问题。您可以做的是,交换与客户绑定到单个用户的秘密,以便对您的API的任何调用都代表该用户,并且仅限该用户(假设保密安全 - 他们不会丢失他们的设备等)。然后,您可以使用此密钥加密或签署您的传出AJAX调用。这确保了某人只能影响他们自己的帐户(例如,仅更新他们自己的帐户,仅上传与其帐户相关联的内容等),并且不能代表其他用户进行任意呼叫。
这对于许多类型的应用程序来说已经足够了 - 尽管您没有提供有关AJAX调用的详细信息。没有人会故意泄露他们自己的“个人”秘密(虽然如果盗窃是一个问题,或者你有更高的安全要求,那么你可以实施2FA或更多)。
就个人而言,如果这是非常重要的事情,我不会建议你自己推出自己的系统。安全性很难做到正确,并且有许多现有的身份验证系统(例如OAuth2)已经在野外进行了测试和强大的测试。