Comments 25
Ответил, что "опасен", хотя на самом деле с опасностью не сталкивался, просто навигация в opener без моего участия бесит.
К сожалению, в Firefox обсуждение этой подлянки заглохло три года назад на этапе «пусть кто-нибудь внятно опишет, как с этим борется Chrome, чтобы мы могли порассуждать о том, как нам такое же реализовать».
Яндекс, по старой памяти, и не против быть на высоте, но коммерческие вопросы перебивают это похвальное движение. Слежка за пользователями, в которой Я столь часто подозревали, даёт, очевидно, выхлопа больше, чем затыкание возможности для слежки своими же руками.
Тут, конечно, можно спорить про теории заговора, но небезызвестный домен в Я-зоне, набитый самыми разными техниками для отслеживания юзера, даже если тот меняет браузер или как-то ещё пытается показаться "другим посетителем", существует который год, и это, увы, наводит… При этом же нет даже тени сомнения в комментариях о том, что Я-сервисы (те же такси) ведут себя по разному для разных юзеров (что как бы не сильно законно, но отлично объясняется идеей защиты от фрода), и изменения учитывают полный портрет юзера (не понравился роботу на одном сервисе — будешь особенным образом обрабатываться на всех остальных). Реклама, учитывающая произносимые рядом с телефоном слова, тоже многим бросилась в глаза, но — это же совпадение, как такое можно только утверждать, правда?
Это я к чему: вектор опасен для юзера, но "для большой компании на последнюю букву" может быть и наоборот.
У них даже в лайтхаусе есть на это проверка: developers.google.com/web/tools/lighthouse/audits/noopener
Меня не отпускает сильное чувство что Яндекс превращается во что-то очень нехорошее. Я даже начинаю подозревать что у них там менеджмент с Почты России пришел "бизнесу учить". Хороший браузер стал тормозным и перегруженным всякого рода глючными функционалом. При любой установки софта на винду получи в довесок браузер, менеджер браузеров, алисо в панель и тормоза… не знаю как у остальных на андроидах а в последней версии от самсунгов из-за браузера с олисо постоянно падала облолчка домашнего
Браузеры на базе хромиума (в том числе, и Яндекс, и Опера, а теперь и Ёж) пресекают попытку доступа через границу фрейма — нельзя просто так взять и поковыряться в содержимом window.opener.
А вот фаерфокс — подвержен уязвимости.
Поскольку в мире дофига легаси сайтов, не уделивших внимание гигиене ссылок, то было бы проще кидаться тапками в сторону фаерфокса, чтобы те пофиксили раз и навсегда.
А вот значение 'window.opener.location.href' в Хроме прекрасно меняется.
Упс! Читать нельзя, а писать можно...
<html><body>
<script type="text/javascript">
var op = window.opener;
try {
// здесь исходная вкладка будет перенаправлена
op.location.href = 'https://ya.ru';
// а здесь вылетит исключение
document.write(op.location.href);
// равно как и здесь, если бы мы сюда добрались
op.document.write('PWNED!');
// на фаерфоксе - доберёмся и не вылетим!
} catch (e) {
alert('Exception: ' + e);
}
</script>
</body></html>
Опять же, работает только на ФФ. (Может быть, на до-хромиумном еже и ослике… не проверял, нет их под рукой).
У меня 67.0 и
window.opener.document.write('PWNED!')
триггерит ошибку безопасности:SecurityError: Permission denied to access property "document" on cross-origin object
Просто возможность взять и повлиять на чужой DOM, дописав туда любой вредоносный JS, была бы настолько опасной, что FF лучше было бы похоронить в таком случае.
Ещё вариант:
victim.html
<div id=victim>innocent</div>
<div><a href='violator.html' target='_blank'>take me!</a></div>
violator.html
<script>
window.opener.document.getElementById('victim').innerText = 'pwned!';
</script>
А если бы violator.htm расположен был бы на другом домене?
Ну то есть ссылка ведет на другой сайт, а там в консоли уже ввести
window.opener.document.write('PWNED!')
Яндекс не считает Tabnabbing уязвимостью