2009-01-26 64 views
3

我们有一个网页,我们通过iFrame向合作伙伴公司提供。 iFrame包含几个javascript文件,它们向我们的服务器发送ajax请求以获取数据。 iFrame本身需要一个API密钥,该密钥是合作伙伴的域名。这可以防止iFrame安装在未注册的域上。但是,从注册站点简单复制iFrame的内容和JavaScript文件并将它们托管在非注册站点上将非常容易。如何通过AJAX请求验证用户?

理想情况下,我们希望使用API​​密钥来限制Ajax请求,并阻止我们的服务器为非注册网站提供请求的数据。但是,似乎没有为Ajax请求设置HTTP_REFERER服务器变量。我们如何知道请求来自哪个网站?可能吗?如果不是,我们如何防止未经授权的访问?

回答

0

当请求iframe时,您可以在您的服务器上生成唯一的ID,然后将其设置为客户端上的cookie。每个AJAX请求都应该包含该cookie。只在最后一个小时左右在身份证的附近。

您永远不能依赖HTTP_REFERER,因为某些代理服务器和防火墙会将其剥离以保护用户的隐私。

0

挑战在于iframe被授权到特定的域,所以我的API密钥与此绑定。我遵循以下教程来生成我的API密钥。

https://ajax.dev.java.net/ajax/api-keys

你认为依靠HTTP_REFERER变量将阻止用户访问的iframe? Sun声称Google使用此方法进行Google Maps API身份验证。

一旦API密钥已被认证,那么cookie方法应该做的伎俩,我认为。谢谢!

1

依靠HTTP_REFERER是不是要走的路。您希望客户的网站使用API​​通过安全链接联系您的网站,并获取一个临时会话字符串,然后将其用作IFRAME的源网址的一部分,这就是Google如何做到的(而不是引用者。 )

使IFRAME的URL在有限时间内有效,之后您将显示一条关于返回客户端页面的好消息以重新开始。