целостность - определяет хеш-значение ресурса (например, контрольной суммы), который должен соответствовать браузеру для его выполнения. Хеш гарантирует, что файл не был изменен и содержит ожидаемые данные. Таким образом, браузер не будет загружать разные (например, вредоносные) ресурсы. Представьте себе ситуацию, когда ваши файлы JavaScript были взломаны на CDN, и не было никакой возможности узнать это. Атрибут целостности предотвращает загрузку содержимого, которое не соответствует.
Неверный SRI будет заблокирован (Chrome Developer-Tools), независимо от перекрестного происхождения. Ниже NON-CORS случай, когда атрибут целостности не совпадает:
Целостность можно рассчитать, используя: https://www.srihash.org/
Или набрав в консоли ( ссылка ):
openssl dgst -sha384 -binary FILENAME.js | openssl base64 -A
crossorigin - определяет параметры, используемые при загрузке ресурса с сервера из другого источника. (См. CORS (Обмен ресурсами между источниками) здесь: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS ). Это эффективно изменяет HTTP-запросы, отправленные браузером. Если добавлен атрибут «crossorigin» - это приведет к добавлению пары «ключ-значение origin: <ORIGIN>» в HTTP-запрос, как показано ниже.
crossorigin может быть установлен как «анонимный» или «использовать учетные данные». Оба приведут к добавлению источника: в запрос. Последний, однако, обеспечит проверку учетных данных. Отсутствие атрибута crossorigin в теге не приведет к отправке запроса без источника: пара ключ-значение.
Вот случай, когда запрашивается «use-credentials» из CDN:
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"
integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn"
crossorigin="use-credentials"></script>
Браузер может отменить запрос, если кроссориген неправильно установлен.
Ссылки
- https://www.w3.org/TR/cors/
- https://tools.ietf.org/html/rfc6454
- https://developer.mozilla.org/en-US/docs/Web/HTML / Элемент / ссылка
Блоги
- https://frederik-braun.com/using-subresource-integrity.html
- https://web-security.guru/en/web-security/subresource-integrity
Attribute integrity not allowed on element link at this point.