与iFrames交互

时间:2014-01-15 06:45:26

标签: javascript jquery html iframe

我有一个用户访问我的网站的场景。我将使用iFrame在该iFrame中的另一个域(不在我的控件中)显示另一个站点。现在这个站点将显示一个登录页面。客户将登录此页面。如果登录成功,我想禁用/模糊iFrame并在我的页面上显示一些字段。在我的网站上输入数据后,我将启用iframe并让用户继续。

我的问题是:如何在iFrame中捕获登录成功事件?

附带问题:有没有比使用iFrame更好的方法?

2 个答案:

答案 0 :(得分:1)

您想知道用户何时登录其他网站并模仿登录行为。您所描述的是针对same-origin policy和实际的security break ...

这可以正确完成,不会出现安全问题,如果外部网站会共享登录相关信息(例如通过OAuth)。然后你可以弹出外部网站的登录页面。您的用户将输入他/她的凭据,您将可以正确访问其登录操作状态。

假设外部应用程序是Facebook,您可以在this page上找到额外的信息和示例。 OAuth tutorial for beginners也可能有用。

希望我帮忙!

答案 1 :(得分:0)

如果以下是您的要求,我不能100%确定您可以尝试以下内容:

- 以下是一些XFO检测的快速示例,在几个网站上没有任何登录检测检查。

<* script src=”http://ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojo/dojo.js”><* /script>
<* script>
var urls = [
'http://www.wikipedia.org/',

'http://ha.ckers.org/',

'http://www.google.com/',

'http://www.facebook.com/',

'https://github.com/',

'http://daringfireball.net/',

];

function detect() {
dojo.forEach(urls, function(url) {
var iframe = dojo.create(“iframe”, { src: url, id: url });
dojo.attr(iframe, “style”, {display: ‘none’});
dojo.connect(iframe, “onload”, function() {
dojo.destroy(iframe);
});

dojo.place(iframe, dojo.body());
setTimeout(function () {
var obj = dojo.byId(url);
if (obj) {
dojo.destroy(iframe);
var entry = dojo.create(“li”, null, dojo.body());
entry.innerHTML = “Yes: ” + url;
} else {
var entry = dojo.create(“li”, null, dojo.body());
entry.innerHTML = “No: ” + url;
}
}, 3000);
});
}
<* /script>

有关上述访问的更多方法和说明 - http://blog.whitehatsec.com/i-know-what-websites-you-are-logged-in-to-login-detection-via-csrf/