2016-02-27 3 views
2

В принципе, я хотел бы иметь что-то вроде этого (это ES6):Как предотвратить iframe от доступа к родительскому окну, но разрешить родительскому окну получить доступ к документу iframe?

<iframe id="iframe"></iframe> 

<script> 
    var iframeDoc = document.getElementById('iframe').contentDocument; 
    iframeDoc.open('text/html', 'replace'); 
    iframeDoc.write(` 
    <!doctype html> 
    <html> 
     <body> 
     <script> 
      // do not allow window.parent access! 
      alert(window.parent.document.cookie); 
     <\/script> 
     </body> 
    </html> 
    `); 
    iframeDoc.close(); 
</script> 

Внимательный окно отображает печенье родительского окна, которое плохо. Я бы хотел, чтобы iframe выполнил свой собственный изолированный javascript-код. Возможно ли это в HTML5?

Я пробовал каждую перестановку атрибута sandbox и его значений.

Возможно, можно построить iframe с его содержимым в качестве URI данных для атрибута src, но это похоже на хакерство. (Или, может быть, нет? Нет ограничений на длину URI?)

ответ

-1

Вы пытались использовать sandbox?

W3C имеет довольно хорошую документацию об этом, и это предотвратит контекст обзора на верхнем уровне.

http://www.w3schools.com/tags/att_iframe_sandbox.asp

Также проверить этот учебник:

http://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/

+0

Да, я говорил в вопросе, что я попытался с помощью 'sandbox', но он не позволяет для конкретного требования, что у меня есть (он может блокироваться в обоих направлениях, iframe для родителя или родителя для iframe, но не только в одном направлении). –

+0

Проверьте это сообщение в блоге о том, как это сделать с помощью JS и песочницы. https://benfrain.com/sandbox-local-htmlcss-code-snippets-inside-iframe-style-guidespattern-libraries/ – Munsterlander

+0

Обновленный ответ с лучшей публикацией блога. – Munsterlander

Смежные вопросы