如何通过AJAX请求验证用户?

时间:2009-01-26 22:14:21

标签: php ajax authentication

我们有一个网页,我们通过iFrame向合作伙伴公司提供。 iFrame包含几个javascript文件,这些文件向我们的服务器发出ajax请求以获取数据。 iFrame本身需要一个键入合作伙伴域的API密钥。如果iFrame安装在未注册的域上,则会阻止iFrame显示。但是,简单地从注册站点复制iFrame的内容和javascript文件并将它们托管在未注册的站点上将非常容易。

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

挑战在于iframe被授权给特定域,因此我的API密钥与之相关联。我按照以下教程生成了我的API密钥。

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

您是否认为依赖HTTP_REFERER变量会阻止用户访问iframe? Sun声称Google使用此方法进行Google Maps API身份验证。

一旦API密钥经过身份验证,我认为cookie方法应该可以解决问题。谢谢!