繁体   English   中英

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

[英]How to know my post request came from my phonegap/cordova app in a PHP server

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

如果帖子来自我的应用程序,我怎样才能保护我的php文件。 例如

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

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

我怎么能确保我的帖子来自我的phonegap应用程序,或者我如何安全地编码该密钥/令牌?

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

我怎么能确保我的帖子来自我的phonegap应用程序,或者我如何安全地编码该密钥/令牌?

你不能 完全停止。 世界上存在逆向工程,而且这种精灵已经被淘汰了至少40年。

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM