Странная такая уязвимость target=’_blank’

Кто не пользуется атрибутом target с тегом <a? Разве тот, кто совсем не знает html. А кто помнит о том, что со страницы, куда пользователь перешел по такой ссылке, есть обратный доступ к ссылающейся странице (то есть той, где размещена ссылка) через объект window.opener?

target='_blank'Например, с новой страницы можно поменять свойство window.opener.location этого объекта. Неожиданно? Шутки-шутками, а это редирект. Редирект вашей оригинальной страницы, осуществляемый с той, куда ваш посетитель перешел. Это один из вариантов фишинга, называемого Tabnabbing.

Как можно воспользоваться таким редиректом?

Тут простор для фантазии не ограничен. Например, отправить посетителя вашего сайта на фейковую страницу авторизации PayPal или Яндекс.Денег, на страницу авторизации соцсети или даже на страницу авторизации админпанели вашего вордпресс-сайта. Ход мысли понятен? Можно даже исполнить некоторый javascript код, связанный с этим объектом. И самое главное, что речь идет об уже открытой, доверенной странице, от которой никто подвоха не ждет.

Больше того, не обязательно знать о html и атрибуте target. Ссылка на «картинку с котиком» может быть размещена на вашей странице в соцсети, а уж атрибут target="_blank" соцсеть поставит сама. Об остальном позаботится «хозяин котика».

Закрыть уязвимость нетрудно, достаточно помимо target="_blank" поставить у ссылки атрибут rel="noopener noreferrer".

Если новая страница открывается через window.open(), надо заблокировать обратный ход:

var newWindow = window.open();
newWindow.opener = null;
newWindow.location = 'newUrl';

Чуть подробнее и с примером можно почитать здесь.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *