Атрибут 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. Помните, что при изменении файла необходимо обновлять хеш-сумму.