我有一个AJAX密集型Web应用程序,其中的请求是不安全的,这意味着没有客户端标识。我不检查它的应用程序是否正在服务器上发出请求。

最近,我发现有人使用我的Ajax请求网址创建了一个模仿我的Web应用程序的iPhone应用程序。我添加了一个过滤器,以通过查看用户代理字符串来丢弃来自iPhone的请求。这绝对是一个临时解决方案。

而不是阻止某些用户代理,我如何确保请求源自我的应用程序?如果我添加了更多服务,例如FB应用,Google Gadget等,我也希望它们也发出请求。

问题是我如何确保请求源自我的应用程序,并丢弃其他所有内容。

最佳答案

您可以使用随响应一起发送的特殊令牌,该令牌将在AJAX调用中查找。这样可以确保调用者必须首先加载您的网页。但是,这仍然不能保证用户不是来自iPhone应用程序。该应用程序可以简单地处理相同的信息并充当代理,并且无法基于HTTP请求进行区分。

您的网站是否定义了任何使用条款?如果是这样,您应该做的第一件事就是联系Apple,并告诉他们该应用程序违反了您的使用条款,并且您希望将其拉出。如果没有,您应该写下一些使用条款,并与应用程序的作者联系,将更改通知他们,并要求他们关闭该应用程序,或达成其他条款。如果所有方法都失败了,那么最好的选择就是增加直接使用AJAX调用的难度。混淆和最小化JS(以及将服务器端函数重命名为不太好命名)之类的简单事情将提高抓取数据的标准。

09-27 01:36
查看更多