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