5

HTTP Referer 是我目前的做法。使用过这种方法的每个人都知道它不是 100% 准确的,因为 Referer 标头是可选的,并且可能会被摆弄。

查看how-to-ensure-access-to-my-web-service-from-my-code-only我仍然不确定如何以最小的方式解决这个问题。

情况:

在别人的网站上做广告。使用 iFrame 以便我可以随意更改内容/功能。每次操作完成时,我都会支付 $x.xx。因此,我需要确保该操作是从我所说的允许完成的地方完成的。

我要防止的:

其他一些网站管理员也随之而来 - “嘿,这是一个很好的工具,让我把它放在我的网站上”所以正如我在顶部所说的,如果引用者不匹配,我会重定向到具有相同的工具,但是在该页面上执行的任何操作都不会花费我任何钱。

在尝试防止上述情况时,请允许以下操作:

我不介意我为“操作完成”支付现金的网站管理员/网站所有者是否将代码放在其他网站上 - 显然这是一件好事。更多的报道,网站所有者获得更多的现金,我完成了更多的行动,这为我带来了更多的现金。

问题

我可以让另一方做什么,这样我就知道进入我网页的所有请求都来自与我有协议的另一方,而不是随机的。

谢谢 :)

信息再应用

其他方网站有一个 iFrame。iFrame 显示我的一个 html/js/php 页面,该页面位于我的一个域中。此页面使用 ajax 请求与作为 ruby​​/sinatra 应用程序的实际 Web 服务进行交互。我有很多不同的页面适合其他方网站的外观和感觉。


所以我认为在其他方服务器和我的服务器之间进行某种聊天是个好主意。然后在 iFrame 请求期间会以某种方式出现此聊天的结果。

但是我不确定对方是否能够为 iFrame 中提供的域设置 cookie - 事实上我很确定它不能。

现在为了解决这个限制,我可以在页面上包含一个脚本作为 iFrame 的一部分,它可以设置 cookie。

好的,总结了以上想法:

  • OtherParty 服务器向我的服务器发送请求得到响应。
  • 将带有该响应的页面呈现为<script src="...?param"></script>的参数
  • 我的脚本设置了一个 cookie
  • 由于脚本在 iFrame 之前,因此首先加载脚本
  • iFrame 加载页面作为 cookie 已在该域 cookie 集上设置之前发送以及
  • 宾果游戏,请求验证合法

这听起来好吗?

顺便说一句,我希望完成操作的工具仅在启用 JS 时才有效,所以......

4

1 回答 1

4

如果您真的想确保谁可以加载您的 iframe,那么执行此操作的一种方法是通过 2-legged OAuth(即让您信任的合作伙伴“签署”iframe GET 请求)。然后,您的服务器可以根据加密有效的签名和已知的签名方授予访问权限。您需要为签名请求强制执行相对较短的有效生命周期,以防止其他人复制它们并将它们嵌入到他们自己的站点中。

这还为您提供了一个优势,即只需进行初始的离线密钥交换,而无需您的合作伙伴在 iframe 插入之前向您发出额外的服务器请求。

于 2009-11-01T04:01:40.377 回答