Subresource Integrity: проверка содержимого подключённого файла
SRI позволяет браузеру проверить, соответствует ли загруженный скрипт или файл стилей ожидаемому хешу. Это помогает заметить изменение ресурса относительно проверенной версии.
Назначение
SRI позволяет браузеру проверить, соответствует ли загруженный скрипт или файл стилей ожидаемому хешу. Это помогает заметить изменение ресурса относительно проверенной версии.
Как это работает
В integrity указываются алгоритм и хеш точных байтов файла. При несовпадении ресурс не используется. Для междоменных подключений дополнительно требуется корректный CORS; один атрибут crossorigin не заставляет сервер разрешить доступ.
Пример
<!-- site.css: ровно строка body { color: #245c42; } и один LF в конце; без BOM -->
<link rel="stylesheet" href="/assets/site.css" integrity="sha384-FVATBdVNLHX/Cv//uC1SPFRGd9oWh0+3BBIrpuzauYSZ+D+ZLfqlbZ8saZ7RK+Tl">
Что должно получиться
Приведённый хеш рассчитан для указанного короткого CSS-файла. При создании файла с теми же байтами локальный ресурс проходит проверку. Замена окончания строки или добавление пробела меняет хеш.
Граница применения и частая ошибка
SRI подтверждает соответствие выбранной версии, а не безопасность её кода. Если злоумышленник меняет сам HTML вместе с integrity, защита теряет смысл. Автоматически обновляемый URL без фиксированной версии может внезапно перестать соответствовать хешу.
Самостоятельная проверка
Создайте файл на собственном стенде, проверьте загрузку, затем измените один цвет без обновления integrity. Посмотрите сообщение браузера. Новый хеш публикуйте только после проверки новой версии файла.