Subresource Integrity

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Subresource Integrity або SRI — рекомендація (стандарт) організації W3C покликана створити засіб для захисту вебсайтів від атаки на використані ними сторонні ресурси. Зокрема, цей механізм перевіряє ресурси (такі як скрипти JavaScript, таблиці стилів, зображення, тощо), отримані від третіх сторін (наприклад, мережі поширення контенту) та захищає від підміни їх зловмисниками.

При посиланні на зовнішні данні автор сторінки додає атрибутом відповідного HTML-елемента значення криптографічної геш-функції даного ресурсу. При завантаженні вказаних даних з іншого вебсервера браузер обчислює значення геш-функції та порівнює його зі значенням, вказаним автором сторінки. Якщо значення не збігаються, то даний ресурс відкидається[1].

Станом на квітень 2016 року технологію SRI підтримують веббраузери Firefox, Chrome, та Opera[2].

Станом на травень 2017 технологію SRI став підтримувати веббраузер Safari Technology Preview.[3]

Опис[ред. | ред. код]

Вебсторінки та вебзастосунки часто включають в себе ресурси, розміщені на різних вебсайтах. Наприклад, скрипти, таблиці стилів, зображення, можуть бути розміщені в мережі поширення контенту (англ. content delivery network, CDN). Тому автори вебсторінок повинні довіряти стороннім постачальникам ресурсів. Але автор вебсторінки виявляється беззахисним, якщо зловмисник зможе примусити жертву завантажити дані з ураженого сервера (наприклад, використавши атаку на систему DNS). Так само, зловмисник може здобути несанкційований доступ до серверів мережі поширення контенту та підмінити справжні файли своїми.[джерело?]

Передача даних через захищені канали допомагає усунути деякі ризики: при використанні TLS, HSTS, фіксованих публічних ключів (HPKP), веббраузер може бути впевнений, що він отримує дані з саме того сервера, до якого він звернувся. Проте, ці механізми автентифікують лише сервер, але не отримані дані. Зловмисник (або адміністратор вебсайту) з доступом до сервера може довільно змінювати дані. Механізм SRI дозволяє авторам вебсторінок гарантувати, що користувачі завантажуватимуть зі сторонніх вебсайтів тільки ті ресурси, які визначив автор.

Приклад використання елементу link з атрибутом integrity SRI:

<link rel="stylesheet" href="https://cdn.example.com/style.css[недоступне посилання з лютого 2019]"
     integrity="sha384-+/M6kredJcxdsqkczBUjMLvqyHb1K/JThDXWsBVxMEeZHEaMKEOEct339VItX1zB">

Стандарт вимагає від веббраузерів підтримувати алгоритми SHA-256, SHA-384 та SHA-512 сімейства SHA-2.

Примітки[ред. | ред. код]

  1. Subresource Integrity. Mozilla Developer Network. Архів оригіналу за 26 червня 2019. Процитовано 14 April 2016.
  2. Subresource Integrity. Can I use... Support tables for HTML5, CSS3, etc. Архів оригіналу за 8 квітня 2017. Процитовано 14 April 2016.
  3. Inc., Apple. Release Notes - Safari Technology Preview - Apple Developer. developer.apple.com (англ.). Архів оригіналу за 6 грудня 2017. Процитовано 17 травня 2017.

Посилання[ред. | ред. код]