如何知道我的帖子请求来自PHP服务器中的phonegap / cordova应用程序

时间:2016-08-16 19:00:15

标签: php ajax cordova security

我们说我有一个Phonegap / cordova应用程序,我想通过AJAX向POST和GET请求我的服务器。

如果帖子来自我的应用,我怎样才能保护我的php文件。 E.G。

if($_POST["key"]==$secret_key_got_from_server) {
   // Do the things
}

我想用openssl创建一个安全的唯一键,但如果我在代码中对其进行硬编码以通过AJAX发送它,任何人都可以反编译我的源代码并获取密钥并做他想做的任何事情。

我怎样才能确保我的帖子来自我的phonegap应用,或者如何安全地对该密钥/令牌进行编码?

我不太确定这个问题是在这里还是在安全SE中。

2 个答案:

答案 0 :(得分:5)

  

我怎样才能确保我的帖子来自我的phonegap应用,或者如何安全地对该密钥/令牌进行编码?

You can't。完全停止。世界上存在逆向工程,这个精灵已经被淘汰了至少40年。

问问自己,“为什么有必要确保数据来自我的应用程序?”你很有可能试图解决错误的问题。

答案 1 :(得分:-2)

要检查给定POST消息的来源是否为合法用户,您应该考虑消息的身份验证。可以有多种方法来实现身份验证,但常见的方法是使用在注册或登录过程中发出的令牌。如果发布消息包含有效令牌,我们可以认为该消息是从有效用户发送的,否则不是有效请求。最近 JWT 广泛用于Web应用程序。这些网站可能会有所帮助:JWT.ioJWT - Wikipedia

在这种情况下,如果攻击者可以捕获并修改您的POST消息,那么您的方案将失败。要防止此攻击情形,您需要加密邮件。正如您所说,如果您在客户端应用程序上对密钥进行硬编码,攻击者可以通过分析客户端应用程序来了解密钥。因此,更好的方法是使用服务器的公钥加密邮件。公钥仅用于加密,并且在计算上不可能使用公钥解密消息。解密由私钥完成,私钥应安全地存储在服务器中。

这些基于公钥和私钥的加密方法称为公钥密码系统(PKC)。例如,RSA和ECC是最着名的公钥加密系统。

对于Web应用程序,提供HTTPS协议。您可以使用HTTPS加密POST消息。

请注意,加密本身不提供完整性和身份验证。加密只是隐藏邮件,但不保证邮件是从有效用户发送的。