цілісність - визначає хеш-значення ресурсу (наприклад, контрольної суми), яке має відповідати, щоб браузер його виконав. Хеш гарантує, що файл був модифікований і містить очікувані дані. Таким чином браузер не завантажує різні (наприклад, шкідливі) ресурси. Уявіть ситуацію, коли ваші JavaScript-файли були зламані на CDN, і це не було можливості знати. Атрибут цілісності запобігає завантаженню вмісту, який не відповідає.
Недійсні SRI будуть заблоковані (інструменти для розробників Chrome), незалежно від перехресного походження. Нижче випадку NON-CORS, коли атрибут цілісності не відповідає:
Цілісність можна обчислити за допомогою: https://www.srihash.org/
Або набравши в консоль ( посилання ):
openssl dgst -sha384 -binary FILENAME.js | openssl base64 -A
crossorigin - визначає параметри, які використовуються при завантаженні ресурсу з сервера іншого походження. (Див. CORS (Cross-Origin Resource Sharing) тут: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS ). Це ефективно змінює HTTP-запити, що надсилаються браузером. Якщо доданий атрибут "crossorigin" - це призведе до додавання початкового коду : <ORIGIN> пара ключа-значення в HTTP-запит, як показано нижче.
crossorigin може бути встановлений як "анонімний", так і "обліковий запис використання". І те й інше призведе до додавання походження: у запит. Останнє, однак, забезпечить перевірку облікових даних. Жоден атрибут crossorigin у тезі не призведе до надсилання запиту без походження: пара ключ-значення.
Ось випадок, коли ви вимагаєте від 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>
Веб-переглядач може скасувати запит, якщо crossorigin неправильно встановлений.
Посилання
- 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.