2014-01-15 11 views
0

У меня есть сценарий, когда пользователь посещает мой сайт. Я собираюсь использовать iFrame, чтобы показать другой сайт в другом домене (не в моем контроле) в этом iFrame. Теперь на этом сайте будет отображаться страница входа. клиент войдет в эту страницу. Если вход успешно завершен, я хочу отключить/размыть iFrame и показать некоторые поля на моей странице. После ввода данных на моем сайте я включу iframe и позволяю пользователю продолжать.Взаимодействие с iFrames

Мой вопрос: Как я могу захватить успешное событие входа в iFrame?

Боковой вопрос: Есть ли лучший способ сделать это, чем использовать iFrame?

+2

[Same-Origin Policy] (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/

Смежные вопросы