Ссылки на пункты назначения из разных источников небезопасны

Published on Updated on

Translated to: English, Español, 한국어, 中文, 日本語

Устанавливая ссылку на страницу на другом сайте с помощью атрибута target="_blank", вы можете подвергнуть свой сайт проблемам с производительностью и безопасностью:

  • Другая страница может выполняться в рамках того же процесса, что и ваша страница. Если на другой странице выполняется много JavaScript, производительность вашей страницы может снизиться.
  • Другая страница может получить доступ к объекту window с помощью свойства window.opener. Это может позволить другой странице перенаправить вашу страницу на вредоносный URL.

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

Начиная с Chromium версии 88, якоря с target="_blank" по умолчанию получают поведение noopener. Явное указание rel="noopener" помогает защитить пользователей устаревших браузеров, включая Edge Legacy и Internet Explorer.

Почему аудит пункта назначения из разных источников Lighthouse завершается неудачей

Lighthouse помечает небезопасные ссылки на пункты назначения из разных источников:

Аудит Lighthouse, показывающий небезопасные ссылки на пункты назначения из разных источников

Lighthouse использует следующий процесс для определения ссылок как небезопасных:

  1. Сбор всех тегов <a>, содержащих атрибут target="_blank" без атрибутов rel="noopener" или rel="noreferrer".
  2. Фильтрация всех ссылок с одинаковым хостом.

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

Each Best Practices audit is weighted equally in the Lighthouse Best Practices Score. Learn more in The Best Practices score.

Как повысить производительность вашего сайта и предотвратить уязвимости системы безопасности

Добавьте rel="noopener" или rel="noreferrer" к каждой ссылке, указанной в вашем отчете Lighthouse. В общем, при использовании target="_blank" всегда добавляйте rel="noopener" или rel="noreferrer":

<a href="https://examplepetstore.com" target="_blank" rel="noopener">
Example Pet Store
</a>
  • rel="noopener" предотвращает доступ новой страницы к свойству window.opener и обеспечивает ее запуск в отдельном процессе.
  • rel="noreferrer" имеет тот же эффект, но также предотвращает перенаправление заголовка Referer на новую страницу. См. Тип ссылки "noreferrer".

Дополнительную информацию см. в публикации «Безопасный общий доступ к ресурсам из разных источников».

Ресурсы

Updated on Improve article

This site uses cookies to deliver and enhance the quality of its services and to analyze traffic. If you agree, cookies are also used to serve advertising and to personalize the content and advertisements that you see. Learn more about our use of cookies.