предотвратить родительские манипуляции с DOM для дочернего сценария iframe - PullRequest
0 голосов
/ 22 марта 2011

У меня есть страница, содержащая другую страницу в том же домене внутри фрейма. Можно ли предотвратить, чтобы скрипт на странице в рамке мог манипулировать DOM верхней страницы (например, добавляя элемент или скрипт)?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2012

Лучшим решением, вероятно, является использование атрибута песочницы HTML5 в iframe, который (по умолчанию) явно отключает как родительский DOM, так и доступ к сценариям и к тому же источнику.

См. http://msdn.microsoft.com/en-us/hh563496.aspx

0 голосов
/ 22 марта 2011

Вы можете поэкспериментировать с избавлением от «опасных» функций, но сохранить анонимные ссылки на них, например,

(function(){
    var hiddenrefs = {};

    hiddenrefs.dGetElementById = document.getElementById;
    document.getElementById = null;
})();

и так далее.Тем не менее, это будет очень утомительная работа, которая в любом случае обречена на провал.Если это попытка разрешить пользователям запускать Javascript в контролируемой среде внутри iframe, это ошибочная форма безопасности.Iframe может просто выдать top.location = "http://www.myevilpage.com", в этом случае игра для вас закончена.(Это верно даже для другого домена. Iframe может по-прежнему перенаправлять пользователя и всякие неприятные вещи, даже если, строго говоря, он не может получить доступ к DOM родителя.) Разрешение пользователям запускать код JS никогда не бывает безопасным без фильтрацииИсходный код для вредоносного кода, и даже с фильтрацией, это довольно небезопасно, потому что в основном это легко обойти фильтрацию.Многие пытались и многие потерпели неудачу.Я бы никогда не рекомендовал пользователям запускать Javascript.

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