2013-05-22 31 views
1

我有一项服务可以提供给不同的网站。为了使用该服务的网站,他们实现了一个JavaScript,触发一个带有iframe的lightbox。通过iframe对使用我的服务的网站进行身份验证

问题是我不希望任何网站能够使用服务/ iframe。有没有什么办法可以使用iframe来认证网站? 我看到它的方式,一个随机的网站可以使用服务/ iframe从一个网站采取JavaScript并在它自己的网站上实现它。

验证iframe中的实际用户是没有问题的,将会有一个登录表单和一个注册表单。这只是使用我想识别和验证的iframe的网站。

任何建议appriciated!

+0

看看[沙盒的I帧(HTTP:// WWW。 html5rocks.com/en/tutorials/security/sandboxed-iframes/)这并不能回答你的问题,但是如果你使用iframe并且担心安全问题,这是一个很好的解决方案。 – nmoliveira

+0

@nmoliveira好阅读,谢谢! – Tiax

回答

1

您可以在JavaScript中检查document.referrer,如果推荐域名不在您提供的白名单内(或推荐人为空),则根本不显示内容。

但是我们都知道推荐人是多么不可靠,即使在错误的情况下也可能排除用户。

另一种方式只会工作它嵌入您的iframe的网站有服务器端脚本,所以可以计算某种散列 - f.e.当前日期和秘密关键字的哈希值 - 并将其作为GET参数传递到您的iframe URL中。在您的脚本中,您检查给定的值是否与您使用相同数据创建的散列值相同 - 并基于该值显示内容。

使用当前的日期可能是有问题的,虽然如果你的服务器和其他站点的时区设置是不同的,它也可以当用户调用子夜时分分页符。为了防止这样的问题,你可以有远程站点包括用于创建哈希作为GET参数以及Unix的时间戳值 - 那么你可以检查一下,时间戳是不是老了,创建具有精确值的哈希值。 (然后其他网站可能会试图把刚才复制的参数和使用他们自己的网页上为好,但它只会针对一小时间窗口工作)。

+0

谢谢你的回答。我看到的问题是,一个网站想要使用该服务可能只是刮了参数每天一次,并使用服务,而不为它付出=/ – Tiax

+0

就像我说的,如果你让你的散列“有效”为较短的时间内只是,他们将不得不经常刮。但通常这种方法无法避免刮擦。 – CBroe

+0

没错,也许没有完美的解决方法。也许解决这个问题的最好方法就是通过授权并试图追捕这些贪吃蛇:P – Tiax

相关问题