Понимание безопасности сторонних разработчиков - PullRequest
5 голосов
/ 25 июля 2010

Facebook и другие предлагают небольшие фрагменты 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, но многие компании делают то же самое, поэтому этот вопрос никоим образом не относится к Facebook, поэтому я не отмечаю его как таковой.

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

Ответы [ 3 ]

3 голосов
/ 25 июля 2010

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

3 голосов
/ 25 июля 2010

Я знаю, что родительская страница может получить доступ к DOM iframe.Недавно у нас был проект на работе, где у нас был сайт, который должен был соответствовать 508.Iframe не было, и хотя программы чтения с экрана обрабатывают iframe намного лучше, содержимое этого iframe не было совместимым.Мы загрузили библиотеку jquery на наш сайт, а затем также загрузили код на наш сайт, чтобы манипулировать iframe (только после его загрузки), и в этот момент создаем гибридное содержимое 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 голосов
/ 17 октября 2013

Я предполагаю междоменный iFrame, так как предположительно риск был бы ниже, если бы вы контролировали его самостоятельно.

Я пытался понять это сам

  • Clickjacking / XSS является проблемой, если ваш сайт включен в качестве iframe
  • Скомпрометированный iFrame может отображать вредоносный контент (представьте, что iFrame отображает поле входа вместо рекламы)
  • Включенный iframe может выполнять определенные JS-вызовы, такие как оповещение и подсказка, которые могут раздражать вашего пользователя
  • Включенный iframe может перенаправлять через location.href (да, представьте, что 3-кадровый кадр перенаправляет клиента с bankofamerica.com на bankofamerica.fake.com)
  • Вредоносные программы внутри 3p-фрейма (java / flash / activeX) могут заразить вашего пользователя

Обратите внимание, что атрибут html5 "песочница" может решить многие из этих проблем, если ваш браузер поддерживает его, и вы можете запретить включение вашего сайта в качестве iFrame с помощью X-FRAME-OPTIONS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...