首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证用Phonegap封装的HTML5应用程序(或等效的)

验证用Phonegap封装的HTML5应用程序(或等效的)
EN

Stack Overflow用户
提问于 2014-02-05 13:36:37
回答 5查看 827关注 0票数 5

是否有一种方法,仅使用JavaScript (客户端),以确保HTTP请求实际上来自我的Phonegap应用程序?

请注意:我不是在对用户进行身份验证,而是在某种意义上,对应用程序本身进行身份验证。没有(也不应该)与此相关的任何类型的用户交互。

甚至不谈论通信的机密性(我没有使用HTTPS,有效负载也没有加密)。

我的猜测是,最终,这必然需要某种硬编码的钥匙。

问题是,正如您可以看到的,例如here,这样的密钥通常是任何人都可以访问的--这个问题不仅出现在Javascript资产上,而且也出现在Android中。

如果无法使用Phonegap或任何Cordova插件,您是否可以建议一个类似的框架(或类似Icenium的环境)来使这件事成为可能?

或者,最后,在上述情况下,不采取这种预防措施是否有真正的风险?

编辑: Kurt提醒我,我没有提到SSL客户端身份验证。不管它是否适用/方便,它总是会导致私钥保密的问题。我发现这是一个很好的描述here,并总结在一句话:“密钥没有导出的保证只有强大的密钥商店本身”。

EN

回答 5

Stack Overflow用户

发布于 2014-03-17 10:45:48

应用程序是一种软件,而不是有形的对象。验证它的唯一方法是,如果该软件包含某种秘密。在服务器上,要对客户端进行身份验证,您需要请求客户端证明它知道这个秘密。

如果您允许任何人下载您的应用程序,那么它包含的任何数据都不是秘密的。因此您无法验证您的应用程序。

你所能做的就是用混淆技术使秘密更难提取。混淆做好是非常困难的- adding人力月对您的开发努力,如果他们要有任何好处。如果您仍然可以使用调试器,那么您就错了。混淆做错事意味着浪费精力。模糊的努力意味着增加几天或几个星期的工作,让某人揭开秘密。你得问问自己这是否值得。从根本上说,混淆是把钥匙藏在门垫下面。或者在花盆后面,如果你想要的话。

还请参阅Security Stack Exchange上的一些类似问题:How to store a private RSA key for an application?Storing private asymmetric key in application binary?

票数 8
EN

Stack Overflow用户

发布于 2014-03-17 10:42:18

要做到这一点,您需要首先很好地定义运行应用程序意味着什么。事实证明,这是不平凡的,但我不想让每个人都对它进行讨论。

如果运行应用程序意味着参与与您所期望的(黑匣子定义)相同行为的某个进程,那么您可以部分地解决这个问题,方法是“跟踪”客户机上的计算(间歇性的或经常性的),并在相同的输入条件下检查结果。甚至不要考虑在密码学中这样做,但是对于游戏之类的东西,您可以在用户输入的情况下定期检查客户端的行为。

您还可以在应用程序中引入一些奇怪的行为(例如在游戏中创建一个不可见的sprite,如果该游戏的目标是客户端的交互,则指示一个修改的客户端)。

在反作弊的游戏世界中,已经做了很多关于这类事情的工作,并不是所有的工作都涉及到对环境的检查。

票数 6
EN

Stack Overflow用户

发布于 2014-02-14 07:29:41

在更高的层次上工作如何:公开/私钥通信。这样,您就可以拥有SSL加密连接,而不必进行必要的身份验证。

这种工作方式可能的缺点是,当手机被盗或购买新钥匙时,你必须生成新的钥匙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21578907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档