2014-01-15 106 views
0

我有一個用戶訪問我的網站的場景。我打算使用iFrame在另一個域(不是我的控件)中顯示另一個站點的iFrame。現在這個網站會顯示一個登錄頁面。客戶將登錄到此頁面。如果登錄成功,我想禁用/模糊iFrame並在我的頁面上顯示一些字段。在我的網站上輸入數據後,我將啓用iframe並讓用戶繼續。與iFrames交互

我的問題是:我如何捕獲iFrame中的登錄成功事件?

側面問題:有沒有比使用iFrame更好的方法?

+2

[相同的起源(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript )阻止這樣的事情。當「不在我的控制範圍內」時沒有解決方法; )。 – Teemu

回答

1

您想知道用戶何時在另一個網站上登錄並模仿登錄行爲。你描述的是對same-origin policy和實際security break ...

這可以適當地進行的,沒有安全的擔憂不斷上升,如果外部網站將共享登錄相關信息(例如,通過OAuth)。然後,您可以只彈出外部網站的登錄頁面。您的用戶將輸入他/她的憑據,您將可以正確訪問其登錄操作狀態。

假設外部應用程序是Facebook,你可以在this page上找到額外的信息和例子。 OAuth tutorial for beginners也可能有用。

希望我幫了忙!

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/