Большинство создают внешние ссылки через target="_blank" и не знают одного интересного нюанса — страница, на которую мы попадем таким образом, получит частичный контроль над ссылающейся на нее страницей через js свойство window.opener.
Через window.opener.location мы сможем сделать редирект на, к примеру, фишинговую страницу. Это своего рода tabnabbing, только более продвинутый. Так как жертва меньше всего ожидает подмены страницы, в открытой ранее, доверенной вкладке браузера.
Проблема далеко не новая, но до сих пор актуальная, и не многие о ней знают.
Варианты решения проблемы
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 — js плагин который, по описанию, решает поставленную задачу (лично не тестировал).
P.S.: В FF не работает rel="noopener". Вместо него можно использовать rel="noreferrer".
Большинство создают внешние ссылки через
target="_blank"
и не знают одного интересного нюанса — страница, на которую мы попадем таким образом, получит частичный контроль над ссылающейся на нее страницей через js свойствоwindow.opener
.Через
window.opener.location
мы сможем сделать редирект на, к примеру, фишинговую страницу. Это своего рода tabnabbing, только более продвинутый. Так как жертва меньше всего ожидает подмены страницы, в открытой ранее, доверенной вкладке браузера.Проблема далеко не новая, но до сих пор актуальная, и не многие о ней знают.
Варианты решения проблемы
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 — js плагин который, по описанию, решает поставленную задачу (лично не тестировал).
P.S.: В FF не работает rel="noopener". Вместо него можно использовать rel="noreferrer".