我有一个用户访问我的网站的场景。我将使用iFrame在该iFrame中的另一个域(不在我的控件中)显示另一个站点。现在这个站点将显示一个登录页面。客户将登录此页面。如果登录成功,我想禁用/模糊iFrame并在我的页面上显示一些字段。在我的网站上输入数据后,我将启用iframe并让用户继续。
我的问题是:如何在iFrame中捕获登录成功事件?
附带问题:有没有比使用iFrame更好的方法?
答案 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/