Вы можете попробовать использовать отдельное окно (window.open) для загрузки восстановленных внешних сайтов вместо iframe. Пока они находятся в одном домене, они по-прежнему смогут общаться, но дочернее окно вряд ли будет связываться с вашим главным окном.
В качестве альтернативы, ваше внешнее окно может ничего не делать и находиться в другом (суб) домене, чем ваше контрольное окно. Ваше окно управления - это iframe во внешнем окне, а восстановленный внешний сайт - это еще один iframe, использующий тот же домен, что и ваш кадр управления. Теперь, если ваш 'внешний' iframe попытается что-то сделать с window.top (помимо навигации), он потерпит неудачу из-за междоменной политики, но ваш контрольный iframe будет использовать тот же домен, что и ваш 'внешний' iframe, так что вы можете проверить и манипулировать им.
Если вы используете второй подход, фреймы все равно смогут перемещаться по верхнему окну. Вы можете предотвратить это, добавив что-то вроде этого в верхнем окне:
window.onbeforeunload = function(){return '';};
Теперь вам будет предложено диалоговое окно, если что-то пытается перейти по странице, и вы можете прервать навигацию. Это, вероятно, исправит ваш текущий подход сам по себе, но может быть лучше иметь верхнее окно в отдельном домене на случай, если внешний сайт попытается сделать с ним что-то неожиданное.