Spec-Zone.ru › HTML

integrity атрибут HTML

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с апреля 2018 года.

  • Подробнее
  • Полная таблица совместимости
  • Оставить отзыв
>

Атрибут integrity позволяет разработчику указать, что связанный скрипт или таблица стилей должны иметь определённое содержимое. Браузер проверит, действительно ли ресурс содержит это содержимое, и откажется загружать его, если это не так.

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

Описание

Атрибут можно применять только к элементам <script> или <link>.

Атрибут состоит из одного или нескольких компонентов, каждый из которых включает:

  • Идентификатор криптографической хеш-функции. Поддерживаются три хеш-функции. В порядке возрастания надёжности это SHA-256, SHA-384 и SHA-512.
  • Результат хеширования содержимого ресурса с помощью указанной хеш-функции.

Когда браузер загружает ресурс с установленным атрибутом integrity, он сначала выберет набор хешей, вычисленных с помощью самой надёжной из присутствующих хеш-функций. То есть, если атрибут содержит значения, вычисленные с помощью SHA-256 и SHA-384, браузер будет использовать только хеши, вычисленные с помощью SHA-384.

Затем браузер вычислит хеш содержимого ресурса с помощью указанной функции и сравнит результат со всеми заданными значениями: если фактическое значение совпадёт с любым из заданных, браузер загрузит ресурс, иначе откажется от его загрузки.

Подробнее см. в нашем руководстве по целостности подресурсов.

Значения

Значение этого атрибута представляет собой разделённый пробелами список компонентов, каждый из которых имеет одну из следующих форм:

  • sha256-HASH_VALUE
  • sha384-HASH_VALUE
  • sha512-HASH_VALUE

В каждом случае часть перед - указывает используемую хеш-функцию, а HASH_VALUE — это результат хеширования ресурса указанной хеш-функцией, закодированный в формате base64.

Примеры

>

Использование разных хеш-функций

Следующий элемент <script> содержит атрибут integrity с тремя значениями: одно вычислено с помощью SHA-256, одно — с помощью SHA-384 и одно — с помощью SHA-512.

Браузер выберет значение, вычисленное с помощью самого надёжного алгоритма, который он поддерживает. Поскольку все современные браузеры поддерживают SHA-512, это означает, что браузер выберет значение sha512-. Он вычислит хеш содержимого файла с помощью SHA-512 и сравнит результат со значением sha512-, а файл загрузит, только если значения совпадут.

В этом случае наличие нескольких значений позволяет веб-сайту работать с браузерами, которые могут поддерживать не все хеш-функции.

<script
  src="https://cdn.example.com/script.js"
  integrity="
  sha256-NmUxNTFiMDUzZGIwZjcwZDIyYTc5NTA4ZmQyNT
  sha384-Tk2Yjg3YmYzMWNkZTdhMTFkM2FlNDg4ZjE3MzEzNTk3ZDlh
  sha512-OGUwYThkZDc2YzFlZGI5MDEzZmZhMGFkMGQ0OTQ3MzZkNGYZTEzODk2"
  crossorigin="anonymous"></script>

Обратите внимание: в этом и последующих примерах мы для краткости сократили примеры значений хеша.

Использование разных значений хеша

Следующий элемент <script> содержит атрибут integrity с двумя разными значениями, вычисленными с помощью алгоритма SHA-512. Эти разные значения соответствуют альтернативным вариантам содержимого связанного файла.

Если хеш SHA-512 связанного файла совпадает с любым из заданных значений, браузер загрузит файл.

Это позволяет серверу по адресу cdn.example.com возвращать одну из двух версий файла.

<script
  src="https://cdn.example.com/script.js"
  integrity="
  sha512-ZmQ5NjNiYWJjYTM3MjRhMGI4MTQzNWRmZTZkZGYyMzQyOGYYTZkYjBm
  sha512-OGUwYThkZDc2YzFlZGI5MDEzZmZhMGFkMGQ0OTQ3MzZkNGYZTEzODk2"
  crossorigin="anonymous"></script>

Использование integrity в элементах <link>

Следующий элемент <link> загружает таблицу стилей и содержит атрибут integrity с шестью значениями: они отражают два возможных варианта содержимого связанного файла, каждый из которых вычислен с помощью трёх разных хеш-функций.

Браузер выберет набор значений, вычисленных с помощью самой надёжной из поддерживаемых им хеш-функций: в современных браузерах это будут два значения sha512-.

Затем он вычислит хеш загруженного файла с помощью SHA-512 и сравнит результат с обоими значениями sha512-: если совпадёт хотя бы одно из них, браузер загрузит ресурс.

<link
  rel="stylesheet"
  href="https://cdn.example.com/style.css"
  integrity="
  sha256-NmUxNTFiMDUzZGIwZjcwZDIyYTc5NTA4ZmQyNT
  sha256-OTcyMGZkY2Y3NGZhZjUwNWU5NGQ0ZWJhYWVhND
  sha384-Tk2Yjg3YmYzMWNkZTdhMTFkM2FlNDg4ZjE3MzEzNTk3ZDlh
  sha384-ZTdhYjQ2NTE5OTg0Yjc2ZDU2MDMxMDUxY2Y5NDMxYzI5NjA
  sha512-OGUwYThkZDc2YzFlZGI5MDEzZmZhMGFkMGQ0OTQ3MzZkNGYZTEzODk2
  sha512-IxZTcwZjE2ZjU3MzE4NWM5ODU4ZmJkYjBlYzBhYzFkYzU0OGJmM2ZkN"
  crossorigin="anonymous" />

Спецификации

Спецификация
HTML>
# attr-link-integrity>
HTML>
# attr-script-integrity>
Целостность подресурсов>
# the-integrity-attribute>

Совместимость с браузерами

>

html.elements.link.integrity

Компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS
integrity 45 17 43 32 11.1 45 43 32 11.3 5.0 45 11.3

html.elements.script.integrity

Компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS
integrity 45 17 43 32 11.1 45 43 32 11.3 5.0 45 11.3
ed25519_public_key 141 141 Нет 125 Нет 141 Нет 93 Нет Нет 141 Нет

См. также

  • Целостность подресурсов
  • Атаки на цепочку поставок

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/integrity

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API