Атрибут integrity тега <link>


Описание

Атрибут integrity для тега <link> обеспечивает проверку целостности загружаемых ресурсов с помощью субресурсной проверки (Subresource Integrity, SRI). Он содержит хеш-сумму (дайджест) ожидаемого содержимого файла, что позволяет браузеру удостовериться, что ресурс не был изменен.

Пример использования:
<!-- Подключение CSS с проверкой целостности --> <link rel="stylesheet" href="https://cdn.example.com/styles.css" integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC" crossorigin="anonymous"> <!-- Предзагрузка скрипта с SRI --> <link rel="preload" as="script" href="https://cdn.example.com/app.js" integrity="sha512-MV7K8+y+gLIBoVD59lQIYicR65iaqukzvf/nwasF0nqhPay5w/9lJmVM2hMDcnK1OnMGCdVK+iQrJ7lzPJQd1w==" crossorigin="anonymous">

Форматы хеш-сумм:

Алгоритм Префикс Пример
SHA-256 sha256 sha256-abcdef12345...
SHA-384 sha384 sha384-abcdef12345...
SHA-512 sha512 sha512-abcdef12345...

Обязательные сочетания атрибутов:

  • Всегда требует атрибута crossorigin
  • Применяется для внешних ресурсов (CDN)
  • Может использоваться с rel="stylesheet", rel="preload" и другими

Генерация хеш-суммы:

# Генерация SHA-384 хеша для файла openssl dgst -sha384 -binary styles.css | openssl base64 -A

Рекомендации по использованию:

  • Обязательно используйте для критически важных ресурсов с CDN
  • Обновляйте хеш при каждом изменении файла
  • Для наибольшей безопасности используйте sha384 или sha512
  • Проверяйте работоспособность после добавления integrity
  • Сочетайте с Content Security Policy (CSP)

Ошибки и проверка:

<!-- Неправильно: отсутствует crossorigin --> <link rel="stylesheet" href="styles.css" integrity="sha384-abc..."> <!-- Неправильно: неверный хеш --> <link rel="stylesheet" href="styles.css" integrity="sha384-wronghash" crossorigin="anonymous"> <!-- Правильно: полная реализация --> <link rel="stylesheet" href="https://cdn.example.com/styles.css" integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC" crossorigin="anonymous">

Безопасность и производительность:

  • Защищает от атак с компрометацией CDN
  • Предотвращает выполнение модифицированного кода
  • Незначительное влияние на производительность (однократная проверка)
  • Особенно важен для финансовых и государственных сайтов

Примечание: Атрибут integrity является важным элементом современной веб-безопасности. Для автоматизации процесса генерации хешей используйте инструменты сборки (Webpack, Gulp) или сервисы вроде SRI Hash Generator. Помните, что при изменении файла необходимо обновлять хеш-сумму.