- PVSM.RU - https://www.pvsm.ru -

Опасный target="_blank"

Большинство создают внешние ссылки через target="_blank" и не знают одного интересного нюанса — страница, на которую мы попадем таким образом, получит частичный контроль над ссылающейся на нее страницей через js свойство window.opener.
Через window.opener.location мы сможем сделать редирект на, к примеру, фишинговую страницу. Это своего рода tabnabbing, только более продвинутый. Так как жертва меньше всего ожидает подмены страницы, в открытой ранее, доверенной вкладке браузера.

Проблема далеко не новая, но до сих пор актуальная, и как вижу, не многие о ней знают.

Проблема так же существует в facebook. Для быстрого тестирования можно разместить пост (достаточно приватного) со ссылкой на http://sli.su/kitten.html [1], после кликнуть на пост.
На странице sli.su/kitten.html [1] есть такой код

window.opener.location = 'https://sli.su/facebook.com/auth.html';

который создает редирект с ранее доверенной страницы. Это происходит потому, что браузеру никто не сообщил, что открываемая страница не должна иметь доступа к родительской вкладке.
На момент публикации — без проблем отрабатывает в chrome 50, firefox 45, opera 36.

Таким грешат многие сайты, а некоторые, даже не считают это за проблему «на своей стороне» sites.google.com/site/bughunteruniversity/nonvuln/phishing-with-window-opener [2]

Варианты решения проблемы:

1. Добавить в ссылки

rel="noopener"

Это так же может быть

rel="nofollow noopener"

2. Открывать все внешние ссылки через свою, промежуточную страницу, на которой должен отработать код

window.opener = null;

3. Открывать ссылки в новой вкладке через js

var otherWindow = window.open();
otherWindow.opener = null;
otherWindow.location = targetUrl;

4. Отлавливать все клики по ссылкам и в момент перехода создавать скрытый iframe, через который и делать открытие страницы в новой вкладке. github.com/danielstjules/blankshield [3] — js плагин который, по описанию, решает поставленную задачу (лично не тестировал).

Автор: ganjar

Источник [4]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/119817

Ссылки в тексте:

[1] http://sli.su/kitten.html: http://sli.su/kitten.html

[2] sites.google.com/site/bughunteruniversity/nonvuln/phishing-with-window-opener: https://sites.google.com/site/bughunteruniversity/nonvuln/phishing-with-window-opener

[3] github.com/danielstjules/blankshield: https://github.com/danielstjules/blankshield

[4] Источник: https://habrahabr.ru/post/282880/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best