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

如何知道我的post请求来自PHP服务器中的phonegap/cordova应用程序,php,ajax,cordova,security,Php,Ajax,Cordova,Security,比如说,我有一个Phonegap/cordova应用程序,我想通过POST和AJAX向我的服务器发出请求 如果帖子来自我的应用程序,我如何保护我的php文件。例如 if($_POST["key"]==$secret_key_got_from_server) { // Do the things } 我想用openssl创建一个安全的唯一密钥,但如果我在代码中硬编码以通过AJAX发送,任何人都可以反编译我的源代码并获取密钥,然后做任何他想做的事情 我如何确保我的帖子来自我的phonegap

比如说,我有一个Phonegap/cordova应用程序,我想通过POST和AJAX向我的服务器发出请求

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

if($_POST["key"]==$secret_key_got_from_server) {
   // Do the things
}
我想用openssl创建一个安全的唯一密钥,但如果我在代码中硬编码以通过AJAX发送,任何人都可以反编译我的源代码并获取密钥,然后做任何他想做的事情

我如何确保我的帖子来自我的phonegap应用程序,或者我如何安全地对密钥/令牌进行编码


我不太确定这个问题应该在这里还是在安全方面

>检查给定邮件消息的来源是否合法用户,应考虑消息的“强>认证< /强>。有多种方法可以实现身份验证,但常见的方法是使用注册或登录过程中发出的令牌。如果post消息包含有效令牌,我们可以认为该消息是由有效用户发送的,否则不是有效请求。最近,JWT被广泛用于web应用。这些网站可能会有所帮助:

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

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

对于web应用程序,提供了HTTPS协议。您可以使用HTTPS加密您的帖子

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

我如何确保我的帖子来自我的phonegap应用程序,或者我如何安全地对密钥/令牌进行编码

。句号。逆向工程在世界上是存在的,而这个精灵已经脱离瓶子至少40年了


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

谢谢您的回答,但我不想执行登录/注册过程。我的问题是,当有人打开我的应用程序时,我希望他访问“公共数据”,但不希望其他网站(例如)发布或获取我的数据。所以在我的PHP中,我需要验证来自我的应用程序的信息。所以,你真正想要做的是验证你的应用程序,而不是用户。你不需要登录过程,但你只想证明消息是从你的应用发送的,而不是从其他应用发送的。在这种情况下,我认为最简单的方法是使用客户端ID或客户端密钥,这是一个随机生成的字符串。第一次运行应用程序时,生成客户端ID并将客户端ID注册到服务器,服务器将客户端ID存储到数据库中。当应用程序向服务器发送POST请求时,请包含客户端ID以验证客户端。对于完整性检查,您还可以使用哈希函数包含消息摘要。POST请求仍然是纯文本的,因此如果网络上有攻击者,则她可以嗅探客户端ID。为了防止这种情况,请使用HTTPS。要在用户设备上的应用程序中安全地管理您的客户端ID,请将您的客户端ID存储到安全存储中,例如iOS密钥链或Android密钥库。如果您的服务器检测到可疑的POST请求,那么您可以删除相应的客户端ID。我强烈建议不要将JWT作为一种解决方案塞入其中,因为它甚至不相关,而且除非您被迫这样做。哇,这个链接真的很有用,并帮助我了解了更多关于软架构的知识。谢谢大家!@Carlos2W听到这个消息我真的很高兴。祝你在未来的科技项目中好运。你有什么理由不能使用像Firebase这样的东西吗?它为每个设备生成唯一的令牌,您可以根据Firebase进行验证,以确保它来自移动设备,并且您还可以发送移动通知。顺便说一句,这并不能绝对保证歹徒不会试图获取你的数据,但它会将努力提高到只有最坚定的人才会尝试的程度。