只允许访问特定的请求

我有一个iOS应用程序与Apache 2.2服务器通信。 我想限制访问几个目录,以便只有应用程序将能够访问它们(没有浏览器访问,没有爬虫等)。 我有什么select?

在非标准端口(如8574)上运行Apache。第一步将消除99%的机器人和脚本的“噪音”。

你在Apache中需要的特定configuration是mod_authz_host 。 它将允许您根据Apache所称的“环境variables”(包括用户代理)的各种因素筛选访问请求。 您可以允许从您的自定义用户代理,然后从所有拒绝。

CAVEAT:所有这一切说,基于用户代理的过滤不是实现你想要的正确方法 。 服务器端控件只是确保您的应用程序免受未经授权的访问的开始。 validation到一个Web服务(如你正在开发的)应该使用某种API密钥来实现。 许多REST API都是这样做的。 如果您不确定如何实现基于密钥的密码学, 请咨询专家 (或面对后果)。

跟进:实施公钥密码是正确完成这项工作的许多方法之一。 在你深入挖掘之前,让我说你正处于一个受到伤害的世界。 查看“ 1小时内你需要了解的关于密码学的一切 ”。 请注意,他在演示文稿中说了六次“咨询密码员”。 最简单的方法是,你的服务器应该能够回答以下问题,肯定地回答任何请求:

  1. 我能保证这个请求来自iOS应用吗?
  2. 我能保证这个信息没有被篡改吗?
  3. 我能保证这个用户是他们自称的人吗?
  4. 我可以保证这个用户有权做他们要做的事吗?

正如你在演示中看到的那样,即使是像亚马逊这样的知名API也并不总是这样。 我相信你需要你的团队的专家,至less让你的应用程序的这部分正确。