我有一个用户访问我的网站的场景。我打算使用iFrame在另一个域(不是我的控件)中显示另一个站点的iFrame。现在这个网站会显示一个登录页面。客户将登录到此页面。如果登录成功,我想禁用/模糊iFrame并在我的页面上显示一些字段。在我的网站上输入数据后,我将启用iframe并让用户继续。与iFrames交互
我的问题是:我如何捕获iFrame中的登录成功事件?
侧面问题:有没有比使用iFrame更好的方法?
我有一个用户访问我的网站的场景。我打算使用iFrame在另一个域(不是我的控件)中显示另一个站点的iFrame。现在这个网站会显示一个登录页面。客户将登录到此页面。如果登录成功,我想禁用/模糊iFrame并在我的页面上显示一些字段。在我的网站上输入数据后,我将启用iframe并让用户继续。与iFrames交互
我的问题是:我如何捕获iFrame中的登录成功事件?
侧面问题:有没有比使用iFrame更好的方法?
您想知道用户何时在另一个网站上登录并模仿登录行为。你描述的是对same-origin policy和实际security break ...
这可以适当地进行的,没有安全的担忧不断上升,如果外部网站将共享登录相关信息(例如,通过OAuth)。然后,您可以只弹出外部网站的登录页面。您的用户将输入他/她的凭据,您将可以正确访问其登录操作状态。
假设外部应用程序是Facebook,你可以在this page上找到额外的信息和例子。 OAuth tutorial for beginners也可能有用。
希望我帮了忙!
我不是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/
[相同的起源(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript )阻止这样的事情。当“不在我的控制范围内”时没有解决方法; )。 – Teemu