Ссылка с target = "_ blank" и rel= "noopener noreferrer" по-прежнему уязвимы?

Я вижу людей, которые рекомендуют, чтобы всякий раз, когда кто-то использовал target = "blank" в ссылке, чтобы открыть ее в другом окне, она должна указывать rel= "noopener noreferrer". Интересно, как это мешает мне, например, использовать Инструменты разработчика в Chrome и удалять атрибут rel? Затем нажмите на ссылку...

Это простой способ сохранить уязвимость?

Ответ 1

Возможно, вы неправильно понимаете уязвимость. Вы можете прочитать больше об этом здесь: https://www.jitbit.com/alexblog/256-targetblank---the-most-underestimated-vulnerability-ever/

По сути, добавление rel="noopener noreferrer" к ссылкам защищает пользователей вашего сайта от того, что сайт, на который вы rel="noopener noreferrer" потенциально может захватить браузер (через мошенническую JS).

Вы спрашиваете об удалении этого атрибута с помощью Инструментов разработчика - это потенциально может подвергнуть вас (человека, который вмешивается в этот атрибут) уязвимости.

Ответ 2

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

Example malicious flow

Ссылочная страница хранится в window.opener, и вредоносный сайт может изменить это с помощью:

if (window.opener) {
   window.opener.location = "https://phish.example.com";
}

Добавление rel="noopener noreferrer" исправляет эту уязвимость во всех основных браузерах.

Обратите внимание, что теоретически вы можете удалить клиентскую часть rel с помощью манипуляций... но зачем вам это нужно? Все, что вы делаете, это сознательно делаете себя уязвимыми для атаки.

Другие пользователи, которые посещают тот же веб-сайт (и не изменяют свой собственный код на стороне клиента), все равно будут в безопасности, поскольку сервер все равно будет обслуживать rel="noopener noreferrer". Ваше удаление этого относится только к вам.

Ответ 3

Ссылки, открытые в новой вкладке с помощью target = "_ blank", по-прежнему уязвимы. Вы можете вызвать это событие также с помощью функции javacript windon.open(), поэтому убедитесь, что они также добавляют атрибуты noopener и noreferrer.

Самый простой способ проверить весь веб-сайт на наличие уязвимости этого типа - использовать онлайн-инструмент, такой как securityHTML.com для разметки html и securityJavaScript.com для кода javascript.

Ответ 4

Атрибут тега привязки rel= 'noopener' или rel= 'noreferrer' повышает безопасность веб-сайта, но некоторые люди хотят его игнорировать, поскольку считают, что это повлияет на их поисковую оптимизацию. Это просто миф. Он защищает конфиденциальность аудитории вашего сайта и предотвращает внешний сайт путем распространения вредоносного кода.