【问题标题】:jsonp referer url determinejsonp referer url 确定
【发布时间】:2012-02-02 08:57:06
【问题描述】:

我有一个 jquery 插件,我正在使用 jsonp 跨域调用 jsp 文件。 我想将 jsp 返回值仅限于我们数据库中的特定网站。 为了实现这一点,我需要以某种方式获取 jsonp 调用触发的网站的 ip 或 url,而不是客户端/用户 ip。我已经尝试过 http 标头中的 referer 值,但这不适用于 IE,我想这也不是最好的解决方案。 我现在如何安全地从他的网站上使用我的插件调用我的 jsp 文件?

提前致谢。

【问题讨论】:

    标签: java javascript jquery jsp jsonp


    【解决方案1】:

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

    但是,对于来自客户端浏览器的请求,您必须小心,并且必须评估您需要处理请求的“安全性”程度是什么意思。 (由于不受信任的客户端会发出请求,因此收集和重用此类标识符将是一项简单的任务)...

    Referrer(如果存在)可以用作双重检查,但正如您所指出的,这是不可靠的并且来自不受信任的客户端计算机,这部分请求也可能是伪造的。

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

    【讨论】:

    • 感谢您的回答查理。在这方面我和你有同样的想法和担忧,我希望有一个最“用户集成友好的解决方案”。你看,我必须把它做成一个插件,这样它就可以很容易地复制粘贴到任何静态或非静态网站中。我在徘徊谷歌如何使用分析脚本识别域?不能只使用帐户密钥。
    • 我很确定 Google Analytics 只使用网络媒体资源 ID(也可以选择在 javascript 中指定的域名,以及其他一些客户端选项)... Google 可能有算法来检测它们是否怀疑有人试图玩弄分析。但是我看不到将额外的点击信息记录到其他人的分析帐户有任何价值,所以谁在乎浏览器是否获得了这个令牌 ID。 (除了记录点击之外,他们无法将其用于任何其他用途,所以 耸耸肩)这可能与您的场景不同(但没有细节,我不能说)。
    • 好吧,就我而言,我想运行一个调查脚本,所以我必须跟踪正在运行调查的网站,以维护有效的统计数据。我不能让不在我数据库中的任何人获取脚本并在他的网站上运行调查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 2013-05-19
    • 2011-04-25
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多