Что должна содержать внешняя ссылка для безопасности?

Как правило, указывая ссылки на внешние ресурсы со своего сайта устанавливают target="_blank" для открытия ссылки в новой вкладке. Действительно, если открывать чужой сайт в той же вкладке, то не каждый пользователь сможет вернуться обратно побродив по другому сайту.

Опасность заключается в том, что страница перехода получает некий контроль при использовании JavaScript, а точнее свойства window.opener.location. Происходит переадресация (редирект) на любой произвольный адрес указанный в этом свойстве.

Чтобы проверить как это работает, можете щелкнуть на ссылку ниже, она откроется в новой вкладке. После её загрузки произойдет редирект этой страницы на главную страницу другого сайта: Контакт с природой.

Фишинговая страница

Существует несколько вариантов как не допустить такого использования внешних ссылок. Необходимо сообщить браузеру о том, что открываемая страница не должна иметь доступа к родительской, находящейся в другой вкладке.

  • Добавить в ссылку атрибут rel="noopener noreferrer". Здесь используются сразу два значения атрибута rel, потому что разные браузеры и различные сайты используют или одно, или другое значение.
  • Использовать код JavaScript, который будет отправлять посетителя через промежуточную страницу:
    <script>
        window.opener = null;
    </script>
  • Открывать ссылки в новой вкладке через JavaScript:
    var otherWindow = window.open(); 
    otherWindow.opener = null; 
    otherWindow.location = targetUrl;

СВами