当前位置: 首页 > 知识库问答 >
问题:

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

燕钟展
2023-03-14

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

只有当帖子来自我的应用程序时,我才能保护我的php文件。例如。

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

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

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

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

共有2个答案

琴俊良
2023-03-14

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

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

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

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

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

蔺沛
2023-03-14

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

你不能。句号。逆向工程存在于世界上,而那个精灵已经从瓶子里出来至少40年了。

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

 类似资料:
  • 我正在尝试开发一个HTML5应用程序,通过PhoneGap移植到native。该应用程序是否可以在移动设备上充当服务器,在另一个移动设备上充当客户端并连接到前者?这些都在本地网络中。 我是PhoneGap的新手,我知道大多数服务器实现都在node.js或PHP等平台上,而且PhoneGap只支持超文本标记语言、CSS和JavaScript。我认为我在这里可能部分错误,因为有各种插件可以帮助简化Ph

  • 我正在使用phonegap创建我的移动应用程序。 我决定使用Couchbase来存储数据;但我不知道我是否必须使用Couchbase移动设备,或者我可以将我的应用程序(javascript)直接与Couchbase服务器连接,以及如何“查询”我的. net应用程序。 我已经在我的系统上下载了couchbase服务器,但如何将其与我的应用程序连接? 我可以使用N1QL“查询”服务器吗。NET也使用p

  • 问题内容: 如何检查是否从同一服务器发送了请求? 说,我的网域位于www.domain.com。现在,我有php处理文件,它将处理通过该域托管的表单。仅当请求是从域内发送时才执行此过程。www.domain.com以及从其他域发送的任何其他请求将被丢弃。 问题答案: 基本上:您不能。 使用HTTP协议,每个请求彼此独立。 第一个想法是检查Referer HTTP标头,但请注意: 可以伪造 (由浏览

  • 问题内容: 我正在尝试在收到C2DM消息时显示一个简单的通知。服务提供给UI,但仍在主线程上运行。我见过有人声称您可以通过服务创建和显示通知。 } 我不知道为什么会抛出该异常。 问题答案: 首先,引发异常是因为创建的通知没有引用该对象的视图对象(contentView属性设置为null)。您必须在显示通知之前调用setLatestEventInfo。 其次,不赞成使用您使用的构造函数。请使用Not

  • 问题内容: 如何使用Parse.com将推送通知发送到我的Cordova 3.5.0 Android应用程序。 大多数帖子似乎涵盖了我问题的某些方面,但没有涵盖全部范围(Parse / Android或Phonegap / Parse) 我实际上已经解决了这个问题,但由于需要使用各种零散的解决方案和论坛来找到答案,因此我将完整的解决方案放在此处,而且我认为Cordova / Phonegap和Pa

  • 问题内容: 在昨天发布的另一个问题中,我对如何在Windows中将Python脚本作为服务运行提供了很好的建议。我唯一想知道的是:Windows如何了解可以在本机工具(“管理工具”中的“服务”窗口)中管理的服务。即 在Windows下,等效于在Linux下将启动/停止脚本放在/etc/init.d中的Windows是什么? 问题答案: 与Windows中大多数“可感知”的东西一样,答案是“注册表”