Исходящие ссылки с target="_blank" без атрибута rel="noopener" создают уязвимость безопасности. Когда пользователь кликает на такую ссылку, открытая страница получает доступ к исходной вкладке через JavaScript. Это как оставить ключи от своей квартиры незнакомцу.
<!-- ОПАСНО -->
<a href="https://externalsite.com" target="_blank">Внешняя ссылка</a>
<!-- БЕЗОПАСНО -->
<a href="https://externalsite.com" target="_blank" rel="noopener">Внешняя ссылка</a>
Когда новая вкладка получает доступ:
// На странице externalsite.com злоумышленник может выполнить:
window.opener.location = 'https://fake-site.com/phishing';
target="_blank"rel="noopener" или rel="noreferrer"<!-- МИНИМУМ -->
<a href="https://externalsite.com" target="_blank" rel="noopener">Внешняя ссылка</a>
<!-- РЕКОМЕНДУЕТСЯ -->
<a href="https://externalsite.com" target="_blank" rel="noopener noreferrer">Внешняя ссылка</a>
function add_noopener_to_external_links($content) {
$content = preg_replace('/<a(.*?)target="_blank"(.*?)>/', '<a$1target="_blank" rel="noopener$2>', $content);
return $content;
}
add_filter('the_content', 'add_noopener_to_external_links');
"react/jsx-no-target-blank"noopener — запрещает доступ к window.openernoreferrer — скрывает источник перехода + включает noopenernofollow — не передает ссылочный вес (для SEO)target="_blank" — уязвимость к атакам через window.openerrel="nofollow" без noopener — безопасность не обеспеченаДо исправления: пользователь кликает на ссылку → открывается фишинговый сайт → исходная страница подменяется → кража данных.
После исправления: пользователь кликает на ссылку → безопасное открытие в новой вкладке → исходная страница защищена.
Атрибут rel="noopener" — обязательный стандарт безопасности для всех внешних ссылок. Потратьте 10 минут на исправление — и защитите своих пользователей от серьезных угроз. Безопасность всегда должна быть приоритетом!