Добавете още CPU & RAM - безплатно - към услугата си Cloud VPS или Managed VPS

WordPress защита при отваряне на връзките

Jump.BG

Обновлението до Wordpress 4.7.4 добави доста поправки към съществуващи проблеми. Но добави и един нов страничен ефект, за който ще поговорим сега. А именно линковете, които могат да повредят съдържанието на страницата. Сега ще ви покажем как и защо се случва това.

В началото хората използваха браузърите по напълно нормален начин с използването на нови прозорци, тогава нямаше интерфейс с табове. Всичко се отваряше по подразбиране в същия прозорец или таб. Интерфейсът с табовете стана предпочитан след излизането на Opera и Firefox. След това HTML дефинира метод за отваряне на линк в нов прозорец или таб. Това се прави много лесно като се направи връзката ето така:

<а target=“_blank” href=“nov_link.html”>текст на линка</а>

Ако искате връзката да се отваря в текущия прозорец или таб се прави ето това:

<а href=“nov_link.html”>текст на линка</а>

Под WordPress всичко става дори още по-лесно с натискането на един бутон в редактора:

който добавя автоматично отварянето на връзката в нов прозорец или таб.

Всичко това работеше чудесно до преди няколко години, когато се откри сериозен проблем, който всички са пропуснали. А именно възможността на отваряния линк да промени съдържанието на отварящия прозорец.

Защо се получава това?

Отваряната връзка в нов прозорец или таб получава като параметър window.opener цялото съдържание на отварящия прозорец или таб. Това позволява на новия документ да види от къде е извикан и да направи няколко прости промени в извикващия прозорец. Разбира се, нещата далеч не са розови в интернет и редом с простите промени са напълно възможни някои не чак толкова прости. Може да се промени изцяло съдържанието на отварящия прозорец, може да се променят връзките в него, може да се прочетат бисквитките, може да се вземе някакво съдържание от него (например паролите, потребителските имена и т.н.). Накратко, съществува възможност да се направят много на брой и все опасни неща. А както често се случва, ако нещо може да се направи опасно, то все някой го прави.

Примери:
https://mathiasbynens.github.io/rel-noopener/
https://jamiefarrelly.github.io/Rel-NoOpener-Example/

Както виждате, отварянето на нови екрани далеч не е безопасно за отварящия прозорец. Разбира се горните примери са напълно безопасни и безобидни, така че тествайте смело.

Как може да бъде спряно това?

Преди няколко месеца се направиха и промени по браузърите с цел запушване на дупката. Бяха добавени 2 нови параметъра rel=“noopener” и rel=“noreferrer”, които вършат две напълно различни неща, но общата им цел е да оправят този проблем. Първият параметър noopener работи предимно на Chrome, Opera и Safari, които при използването му нулират (изчистват) window.opener към новия прозорец. Така новият прозорец няма да може да достъпва никакви данни от стария прозорец. Ако не използвате параметъра, новият прозорец ще може да достъпва данните на стария прозорец.

Под Firefox обаче, този механизъм не работи и трябва да се използва втория параметър noreferrer за тази цел. Все пак, Firefox 52 добави и възможността за noopener.

За да се направи 100% сигурен кода под всички браузъри е много по-добре ако се използват и двата параметъра за пълна защита. Така примера в началото става ето така:


<а target=“_blank” rel=“noopener noreferrer” href=“nov_link.html”>текст на линка</а>

Важно! WordPress ще добави във всички линкове съдържащи target="_blank" горепосочените rel=“noopener noreferrer” независимо дали са външни връзки (към други сайтове) или вътрешни връзки (към същия сайт).

Трябва ли да се страхувате?

Най-простият отговор е - зависи. Ако вие лично си правите линковете към други ваши сайтове и имате пълен контрол над тях - не. Ако правите линкове към сайтове с репутация (Google/Twitter/Facebook и други) - навярно не. Но ако имате потребителско генерирано съдържание - да, добре е да се вземат мерки. А потребителско съдържание може да е дори и един коментар в сайта ви.

Ето защо и в WordPress 4.7.4 вече към връзките, отваряни в нов прозорец/таб, автоматично се подава и параметъра rel=“noopener noreferrer”. Това работи добре, но има един страничен ефект за маркетолозите. Връзка отваряна по този начин се визуализира като “директна” вместо като “от друг източник” в инструментите за анализ на сайтовете тип Аналитикс и подобни. Дори използването на лог файловете на уеб сървъра няма да помогне, защото параметъра referrer просто липсва, тъй като браузъра не го прибавя към заявката.

Поправка

Ако все пак старият вариант много ви липсва, има лесно решение с ето този модул:
https://wordpress.org/plugins/no-noopener-noreferrer-dont-add-relnoopener-noreferrer/

Но трябва много добре да знаете какво и как отваряте от вашия сайт към други сайтове.

WordPress 4.8

Новият WordPress 4.8 ще бъде издаден скоро - по-малко от 4 седмици, и този код е включен в него. Това ще е текущо начина за отваряне на нови прозорци/табове. Ако това не ви харесва винаги можете да използвате модул като показания по-горе за да промените функционалността на отварянето на нови връзки.

Въпреки безспорният плюс от правенето на интернет по-сигурен, това ще има дългосрочни последици за интернет маркетърите и уебмайсторите. Оттук насетне те ще получават трафик от други сайтове буквално на сляпо без да могат да видят от къде точно идват потребителите. Въпреки че тук го описваме специфично за WordPress, очаквайте и останалите CMS системи като Joomla, Drupal и другите да използват този механизъм в бъдеще.

Статия от Jump.BG

Статии, новини и събития, публикувани от екипа на Jump.BG.

Социални мрежи:
Още статии от автора

Абонирайте се за нашия бюлетин

С абонамента си получаваш повече актуални новини и нашите специални промо оферти

Абонирайте се за нашия бюлетин