Целостность подресурсов (SRI)
Что такое Целостность подресурсов (SRI)?
Целостность подресурсов (SRI)Механизм браузера, проверяющий криптографический хеш загруженного со стороннего источника скрипта или таблицы стилей до его выполнения и блокирующий изменённые файлы.
Subresource Integrity, стандартизированная как рекомендация W3C в 2016 году, настраивается атрибутом integrity на тегах script или link, содержащим один или несколько base64-кодированных дайджестов SHA-256/384/512 ожидаемого файла. Браузер загружает ресурс, пересчитывает дайджест и отказывается выполнять или применять его, если ни один из перечисленных хешей не совпадает; несколько разделённых пробелами хешей позволяют странице принимать несколько известных корректных версий. Поскольку для SRI нужно заранее знать точные байты файла, он защищает статические ресурсы с фиксированной версией, а не динамически генерируемые.
SRI — основная клиентская защита от компрометации CDN и угона сторонних скриптов, таких как семейство Magecart. Атака на Polyfill.io показывает, почему это важно: после того как в феврале 2024 года новый владелец приобрёл домен cdn.polyfill.io, CDN начала отдавать полезную нагрузку, перенаправлявшую мобильных пользователей на мошеннические сайты — это обнаружила Sansec 25 июня 2024 года, и пострадало более 100 000 сайтов (отслеживается как CVE-2024-38526). Любая страница, зафиксировавшая хеш integrity, полностью заблокировала бы изменённый файл, потому что дайджест больше не совпадал.
SRI работает совместно с CSP и атрибутом crossorigin и должен сочетаться с фиксацией версий и автоматической перегенерацией хешей в конвейере сборки, чтобы код и дайджест никогда не расходились.
flowchart TD
A["Браузер разбирает тег<br/>с атрибутом integrity"] --> B[Загрузка ресурса с CDN]
B --> C[Вычисление дайджеста SHA-256/384/512]
C --> D{Дайджест совпадает с одним<br/>из перечисленных хешей?}
D -->|Да| E[Выполнить / применить ресурс]
D -->|Нет — подменён или изменён| F[Заблокировать и выдать ошибку]● Примеры
- 01
'<script src="https://cdn.example.com/lib.js" integrity="sha384-..." crossorigin="anonymous"></script>'.
- 02
Директива CSP 'require-sri-for script style' (где поддерживается) для обязательного SRI на всех подресурсах.
● Частые вопросы
Что такое Целостность подресурсов (SRI)?
Механизм браузера, проверяющий криптографический хеш загруженного со стороннего источника скрипта или таблицы стилей до его выполнения и блокирующий изменённые файлы. Относится к категории Безопасность приложений в кибербезопасности.
Что означает Целостность подресурсов (SRI)?
Механизм браузера, проверяющий криптографический хеш загруженного со стороннего источника скрипта или таблицы стилей до его выполнения и блокирующий изменённые файлы.
Как защититься от Целостность подресурсов (SRI)?
Защита от Целостность подресурсов (SRI) обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Целостность подресурсов (SRI)?
Распространённые альтернативные названия: SRI.