2014-12-05 46 views
3

因此,我为我的(JavaScript)Web应用程序提供了一个Web API。该应用程序封装在科尔多瓦,并分布在iOS和Android上。如何验证请求来自特定的Web应用程序

我宁愿保持数据访问受限(保持第三方不使用我的API)。但是,我会如何做到这一点?我不需要(也不希望)用户创建帐户,因此应用程序本身必须以某种方式验证其应用程序发送请求,而不是其他人。

但是如何?

+0

让您的应用程序生成服务器可以理解的令牌 - 更改每个用户等的令牌并对其进行加密 – mplungjan 2014-12-05 12:24:43

+0

这很容易实现,但如果有人通过USB将手机插入其笔记本电脑/计算机并反编译文件,找到生成令牌的(修剪和混淆的)javascript文件,这不会令人难以重构,所以感觉我需要更多的东西 – 2014-12-05 12:28:02

+0

也许生成特定于手机的令牌? – mplungjan 2014-12-05 12:40:54

回答

2

我宁愿保持数据访问有限(使第三方不使用我的API)。但是,我会如何做到这一点?

...

应用程序本身必须以某种方式验证其应用程序发送请求,而不是别人。

...

但是怎么样?

你所要求的是不可能的。这也是解决问题的错误。

延伸阅读:Client Authenticity is not the Server's Problem

0

你不能100%肯定,但你可以做反向工程师为它工作。

  • 使用TLS AO不能easilly用嗅探器看你的协议
  • 不只是使用一个API密钥,使密钥通过应用程序与实际的用户数据一起传播的各种值的函数
  • 考虑使用由服务器发送的API密钥功能,所以一切myateriously减免部分TLS密钥,如果他们MITM的TLS
  • 使用无意义的字段名在API经常
  • 推了更新,改变API系统
相关问题