6

我目前正在构建一个移动应用程序(首先是 iOS),它需要一个后端 Web 服务来与之通信。

由于此服务将公开我只想由我的移动客户端访问的数据,因此我想限制对服务的访问。

但是,我对如何实现这一点有点怀疑。由于我的应用不需要身份验证,因此我不能只使用这些凭据对服务进行身份验证。不知何故,我需要能够识别请求是否来自受信任的客户端(即我的应用程序),这当然会导致人们认为可以只使用证书。但是这个证书不能从应用程序中提取并因此被滥用吗?

目前我的应用程序是基于 iOS 的,但后来 android 和 WP 也会出现。

我期望在 nodejs 中开发的 Web 服务,虽然这不是最终决定 - 但是它将是一个 RESTful 服务。

任何关于最佳实践的建议都值得赞赏!

4

1 回答 1

6

简单的回答:您不能阻止任何人从非移动客户端访问您的网站。然而,你可以让它变得更难。

简单的:

  • 发送非标准 HTTP 标头
  • 设置一些唯一的查询参数
  • 发送一个有趣的(或微妙的不有趣的)用户代理字符串
  • (您可能还可以想到更多)

难的:

  • 实施质询/响应协议以识别您的客户
  • (Ab) 使用 HTTP 作为您自己的加密内容的传输方式
  • (您可能还可以想到更多)

当然,任何人都可以提取数据、反编译代码、重放 HTTP 请求等等。但在某些时候,能够访问免费的 Web 应用程序并不值得为您的应用程序进行逆向工程所需的努力。

然而,这里有一个更基本的问题。与其他客户一起访问您的网站会有什么危害?你没有说;如果没有这些信息,基本上不可能推荐合适的解决方案。

于 2013-01-01T21:37:55.693 回答