HTTP Referer是我现在正在这样做的方式。因为使用此方法的每个人都知道它不是100%准确,因为Referer标题是可选的并且可能是伪装的。
看how-to-ensure-access-to-my-web-service-from-my-code-only我仍然不确定如何以最小的方式解决这个问题。
情况:
在其他人的网站上投放广告。使用iFrame,我可以随意更改内容/功能。每次动作完成后我都会支付$ x.xx。因此,我需要确保从我说的允许完成的操作完成操作。
我想阻止的是什么:
其他一些网站管理员即将开始 - “嘿,这是一个很好的工具,让我把它放在我的网站上” 因此,正如我在顶部所说,我做的atm是如果引用者不匹配我重定向到具有相同工具的页面,但是在该页面上执行的任何操作都不会花费我任何金钱。
在尝试阻止上述操作时,请允许以下内容:
我不介意网站管理员/网站所有者我为“行动完成”支付现金将代码放在其他网站上 - 显然这是件好事。更多的报道,网站所有者得到更多的现金&我完成了更多的操作,这为我带来了更多现金。
问题
我可以让对方做什么呢?我知道进入我网页的所有请求都来自我与之达成协议的另一方,而不是随意的。
谢谢:)
信息重新应用
其他方网站有一个iFrame。 iFrame显示我的一个html / js / php页面,它位于我的一个域中。此页面使用ajax请求与作为ruby / sinatra应用程序的实际Web服务进行交互。我有很多不同的页面,适合其他方网站的外观和感觉。
所以我认为其他各方服务器和我的服务器之间的某种喋喋不休会是一个好主意。然后在iFrame请求期间以某种方式显示此聊天的结果。
但是我不确定对方是否能够为iFrame中提供的域设置cookie - 事实上我很确定它不能。
现在为了解决这个限制,我可以将一个脚本作为iFrame的一部分包含在可以设置cookie的页面上。
好的以上想法总结如下:
这听起来不错吗?
顺便说一句,我希望操作完成的工具只有在启用JS时才有效...
答案 0 :(得分:3)
如果你真的想确保谁可以加载你的iframe,那么一种方法是通过双方OAuth(即让你的可信赖合作伙伴“签署”iframe GET请求)。然后,您的服务器可以根据加密有效签名和已知签名方授予访问权限。您需要为签名的请求强制执行相对较短的有效生命周期,以防止其他人复制它们并将它们嵌入到自己的站点中。
这也为您提供了一个优势,即只需进行初始的离线密钥交换,而无需让您的合作伙伴在iframe插入之前向您发出额外的服务器请求。