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

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".

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

Ресурсы

Last updated: Improve article

We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.