Всім привіт. Поговоримо про один атрибуті в посилань, який напевно відомий вам, це атрибут target=”_blank”, він дозволяє відкривати посилання у новій вкладці. Безліч сайтів, так і на нашому ресурсі теж використовуються посилання на зовнішні ресурси, що відкривається за допомогою використання даного атрибуту.

Існує один нюанс, про який не всі здогадуються, сторінка на яку відбувається перехід отримує частковий контроль над посилається на неї сторінку, за допомогою властивості window.opener в javascript. Насправді це вразливість, яка існує вже значний час, але не всі про це знають.

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

Таким чином, зі сторінки на яку ви посилаєтеся може виконуватися js код, який вас не дуже обрадує. Один з поширених випадків, це може бути фишинговая сторінка, наприклад, яка може виробляти редирект з раніше довіреної сторінки. Це відбувається з тієї причини, що браузеру не було повідомлено про те, що сторінка не повинна мати доступу до батьківського вкладці.

Як вирішити цю проблему?

Проблему вирішує сторона, яка публікує посилання, і це треба розуміти, за вас це ніхто робити не буде. В якості вирішення даної проблеми можна використовувати один з декількох методів.

Перший більш простий, це додавання атрибута rel=”noopener” до зовнішніх посиланнях. Приміром, якщо у вас вже є атрибут rel=”nofollow” ви можете їх використовувати разом:

rel=”nofollow noopener”

Зверніть увагу, що в деяких браузерах даний метод може не працювати, це було помічено в браузері Firefox, в якості альтернативи в цьому випадку так само можна використовувати rel=”noreferer”

Другий варіант, це зробити перехід на зовнішні сторінки через свою спеціально підготовлену для цього. На ній слід виконати код, який власне і не дасть можливості зворотного доступу в коді до вашої сторінки:

window.opener = null;

Третій варіант — відкрити посилання в новій вкладці, за допомогою коду js.

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

Існує так само і інші методи, через iframe, які не дуже зручні, з цієї причини публікувати їх тут не стану.
Стаття англійською, де так само добре описується суть даної теми, з гарним прикладом демострації уразливості:
https://mathiasbynens.github.io/rel-noopener/

На цьому поки все, всім всього доброго!

Додав: htmaker, 24.09.2018 р.
(Ще не оцінили)

Завантаження…

Діліться з друзями:

См. також:


Мета тег robots, приклади використання
Рубрика: Html, CSS, Javascript, SEO

Stimed – задаємо CSS-стилі по часу
Рубрика: Html, CSS, Javascript

Нескінченна анімація обертання на CSS
Рубрика: Html, CSS, Javascript

Анімація обертання при наведенні курсору
Рубрика: Html, CSS, Javascript

Стилізація виділення номера телефону до мобільних браузерах
Рубрика: Html, CSS, Javascript

Список вибору на JQuery
Рубрика: Html, CSS, Javascript

Фіксований заголовок таблиці HTML
Рубрика: Html, CSS, Javascript

Ефекти кнопок для сайту
Рубрика: Html, CSS, Javascript

Анімація набору тексту на JQuery плагіні — TypeIt
Рубрика: Html, CSS, Javascript