2012-01-04 70 views
3

我有一个jQuery插件,我使用jsonp将crossdomain调用到一个jsp文件。 我想严格的jsp返回值只有我们的数据库中的特定网站。 为了实现这一点,我需要以某种方式获得网站的IP或URL的jsonp调用触发,而不是客户端/用户IP。我已经尝试了http头中的referer值,但这不适用于IE,我想这也不是最好的解决方案。 如何安全地使用我的插件从他的网站上调用我的jsp文件?jsonp referer url确定

在此先感谢。

回答

1

最简单的答案是向每个网站发布一个唯一的密钥或其他标识符,它们包含在他们的请求中。你解析这个标识符并适当地调整你的响应。

但是,对于源自客户端浏览器的请求,您必须非常小心,并且必须评估您需要处理请求的“安全”方式的含义。 (因为不信任的客户端会提出请求,这将是一个简单的任务,收集和重新使用这样一个标识符)...

推荐人(如果有的话)可以作为一个双重检查,但正如你所指出的,这是不可靠的,来自不可信的客户端计算机,这部分请求也可能是伪造的。

如果我们可以假设网站所有者进行了一些服务器端处理,您可以让他们实现jsonp调用的代理(这可以确保这样的令牌永远不会落入浏览器手中)......但是我们'd必须知道这样的保障是否真的值得与否:)

+0

感谢您的回答查理。我对此有着同样的想法和担忧,并且我希望能有一个“用户集成的友好解决方案”。你看,我必须把它作为一个插件,这样它可以很容易地复制粘贴到任何网站静态或不。我徘徊谷歌如何识别与分析脚本的域名?不能只使用帐户密钥。 – johniem 2012-01-04 14:42:07

+0

我很确定Google Analytics只是使用网络媒体资源ID(可选的还有一个在javascript中指定的域名以及其他一些客户端选项)... Google可能有算法来检测他们是否怀疑某人正在尝试游戏分析。但是在向其他人的分析帐户记录额外的点击信息时,我看不到任何价值,所以如果浏览器获取此令牌ID,谁会关心。 (除了记录点击之外,他们不能将它用于任何其他用途)*这可能与您的场景不同(但没有细节,我不能说)。 – Charlie 2012-01-04 15:23:14

+0

那么,在我的情况下,我想运行一个调查脚本,所以我必须跟踪调查运行的网站,以维护有效的统计数据。我不能让任何不在我数据库中的人得到脚本并在他的网站上运行调查。 – johniem 2012-01-04 15:51:49