2010-07-25 1 views
5

Facebook и другие предлагают небольшие snippplets iframe, которые я могу разместить на своем сайте. Пример:Понимание защиты сторонних фреймов?

<iframe src="http://www.facebook.com/widgets/like.php?href=http://example.com" 
     scrolling="no" frameborder="0" 
     style="border:none; width:450px; height:80px"></iframe> 

Что я хотел бы знать, если я ставлю этот код в моей стороне, мог код они загружаются в мой доступ к странице в DOM моей страницы? Если это так, я вижу некоторые соображения безопасности.

Аналогично, facebook позволяет мне помещать iframe на свой сайт, так работают приложения facebook. Могу ли я затем удалить любые данные с любой страницы, содержащей мой iframe?

Примечание. В качестве примера я использовал facebook, но многие компании делают то же самое, поэтому этот quesiton не имеет никакого отношения к facebook каким-либо образом, поэтому я не помещаю его как таковой.

Также может ли родительская страница получить доступ к DOM iframe?

ответ

3

На самом деле существуют определенные правила: inheritance for iframes. Это отдельно от политики одного и того же происхождения, и я настоятельно рекомендую прочитать весь справочник Google Browser Sec.

+0

очень полезная ссылка –

3

Я знаю, что родительская страница может получить доступ к DOM iframe. Недавно у нас был проект на работе, где у нас был сайт, который должен был соответствовать требованиям 508. В iframe не было и, хотя читатели экрана лучше обрабатывают iframes, контент в этом iframe не был совместимым. Мы загрузили библиотеку jquery на наш сайт, а затем загрузили код на наш сайт, чтобы манипулировать iframe (только после его загрузки), и в этот момент mashup содержимое iframes должно быть доступно.

Чтобы дать вам представление о том, как мы это сделали, это образец нашего jquery. (Используется множество находок и заменяет, но вы получаете эту идею, вы можете делать другие вещи.)

$('iframe').load(function() { 
    var f = $(this).contents(); 
    f.find('#sysverb_back').remove(); 
    f.find('a.column_head').each(function(){ 
     $(this).attr('title', $(this).text()); 
    });   
    f.find('img[title]:not([alt])').each(function(){ 
     $(this).attr('alt',$(this).attr('title')); 
    }); 
    f.find('input').filter(function() { 
     return this.id.match(/sys_readonly\..+|ni\..+/); 
    }).each(function() { 
     $(this).before('<label for="'+this.id+'" style="display:none;">'+this.id+'</label>'); 
    }); 

}); 

});

Хотя я не знаю, можете ли вы от iframe получить доступ к родительскому DOM.

+0

Доступ к парному DOM - это то место, где я вижу проблему безопасности, я согласен, что доступ к дочернему iframe-контенту должен быть разрешен. – Winforms

+2

@Winforms no it not should not, потому что тогда злоумышленник может поставить '