Атрибут sandbox у iframe
Что такое Атрибут sandbox у iframe?
Атрибут sandbox у iframeHTML-атрибут, накладывающий дополнительные ограничения на содержимое iframe: блокирует скрипты, формы, навигацию и доступ same-origin, пока их явно не разрешат заново.
Атрибут sandbox у <iframe>, определённый в HTML Living Standard, применяет к встроенному содержимому политику наименьших привилегий. При пустом значении (sandbox="") он отключает скрипты, плагины, отправку форм, навигацию верхнего уровня и same-origin, всплывающие окна, захват указателя (pointer-lock), автовоспроизведение, а также API Pointer Lock и Presentation, и принудительно помещает фрейм в уникальный непрозрачный источник (unique opaque origin), так что он не может читать cookie родителя, его localStorage или DOM. Возможности возвращаются по одному токену за раз — allow-scripts, allow-same-origin, allow-forms, allow-popups, allow-modals, allow-downloads, allow-top-navigation-by-user-activation.
Критическая ловушка: сочетание allow-scripts allow-same-origin возвращает фрейм в его настоящий источник и позволяет ему выполнять JavaScript, так что код в песочнице может просто дотянуться до собственного DOM и удалить атрибут sandbox у вложенного фрейма — сводя защиту на нет. Для размещения по-настоящему недоверенного содержимого изолируйте его на отдельном источнике и сочетайте песочницу с Content-Security-Policy: sandbox (который нельзя убрать разметкой) и политиками Cross-Origin-Opener/Embedder. Песочница лежит в основе безопасного рендеринга рекламы, предпросмотра форматированного текста и сторонних виджетов; Caja от Google и современные сервисы вроде CodePen и JSFiddle полагаются на фреймы в песочнице на одноразовых источниках, чтобы выполнять контролируемый злоумышленником код, не подвергая опасности хост-страницу.
flowchart TD
A[Родительская страница] --> B["<iframe sandbox><br/>встраивание недоверенного содержимого"]
B --> C{Какие токены заданы?}
C -->|"sandbox="" (пусто)"| D[Непрозрачный источник, нет скриптов,<br/>нет форм, нет навигации]
C -->|только allow-scripts| E[Скрипты работают, по-прежнему<br/>непрозрачный источник — безопасно]
C -->|"allow-scripts +<br/>allow-same-origin"| F[Настоящий источник + скрипты:<br/>фрейм может убрать собственный<br/>sandbox = побег]
E --> G[Добавьте заголовок CSP: sandbox<br/>отдельный источник = эшелонированная защита]● Примеры
- 01
<iframe src="/preview" sandbox="allow-scripts"></iframe> для безопасного рендеринга недоверенного HTML.
- 02
Встраивание стороннего виджета с sandbox="" для запрета всех возможностей.
● Частые вопросы
Что такое Атрибут sandbox у iframe?
HTML-атрибут, накладывающий дополнительные ограничения на содержимое iframe: блокирует скрипты, формы, навигацию и доступ same-origin, пока их явно не разрешат заново. Относится к категории Безопасность приложений в кибербезопасности.
Что означает Атрибут sandbox у iframe?
HTML-атрибут, накладывающий дополнительные ограничения на содержимое iframe: блокирует скрипты, формы, навигацию и доступ same-origin, пока их явно не разрешат заново.
Как защититься от Атрибут sandbox у iframe?
Защита от Атрибут sandbox у iframe обычно сочетает технические меры и операционные практики, как описано в определении выше.