限制对Web服务的访问以仅允许移动客户端

kla*_*usk 5 security authentication web-services ios

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

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

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

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

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

任何有关最佳实践的建议表示赞赏!

Mat*_*chs 5

简单的答案:您无法阻止任何人从非移动客户端中查看您的网站.但是,你可以让它变得更难.

简单:

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

难:

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

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

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