2

CSPv3 определяет новую disown-opener политику:Что делает политика защиты контента с отключением?

открестился-открывалка директива гарантирует, что ресурс будет disown its opener, когда переходите к.

Связанный WHATWG спецификации не очень полезно либо:

Сошник IDL атрибут на объекте Window, на получение, должен возвращать объект WindowProxy контекста просмотра, из которого текущий контекст просмотра (его открывающий контекст просмотра), если он есть, если он все еще доступен, и если текущий контекст просмотра не отменил его открыватель; в противном случае он должен вернуть значение null. При установке, если новое значение равно нулю, текущий контекст просмотра должен отключить его открыватель; если новое значение - это что-то еще, пользовательский агент должен вызвать внутренний метод [[DefineOwnProperty]] объекта Window, передав имя свойства «открыватель» в качестве ключа свойства и дескриптор свойства {[[Значение]]: значение , [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true} как дескриптор свойства, где value - новое значение.

ответ

3

Это вызывает window.opener быть установлено в null на любых новых окнах или вкладках, которые получают осуществлять навигацию из любого документа подается с НСП заголовком, содержащий disown-opener директивы.

Вариант использования аналогичен используемому для rel=noopener.

Класс атаки, предназначенный для предотвращения, вызван тем фактом, что, например, если у вас есть ссылки в документе A к документу B (потенциально в другом источнике), любой скрипт в документе B может через значение window.opener доступа и управление объектом окна в документе А.

так задокументировать сценарий Б может изменить значение window.opener.location для окна документа находится в к URL документа C, так что окно перемещается от документа к этому URL.

Если документ C предназначен для того, чтобы выглядеть точно так же, как документ A, например, поддельную форму входа - его можно использовать для обмана пользовательских учетных данных пользователя и фишинга.

Mathias Bynens подробно описывает проблему в About rel=noopener: What problems does it solve?.

Установка window.opener на null на навигационный документ для предотвращения проблемы.

Без disown-opener для случая использования он обращается, документ А в первую очередь необходимо открыть новую вкладку/окно документа/место он управляет, а затем использовать сценарий для установки window.opener в null, то есть сценарий в документе в что вкладка/окно переместится к документу B.

Обновление: У меня есть raised a PR against the HTML spec, чтобы добавить информационные примечания к спецификации для этого.

+1

Это должна быть политика по умолчанию ... о, чудеса работы на 25-летней платформе! – Indolering

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