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.
Примітки
- ↑ Subresource Integrity. Mozilla Developer Network. Процитовано 14 April 2016.
- ↑ Subresource Integrity. Can I use... Support tables for HTML5, CSS3, etc. Процитовано 14 April 2016.
- ↑ Inc., Apple. Release Notes - Safari Technology Preview - Apple Developer. developer.apple.com (англ.). Процитовано 17 травня 2017.
Посилання
- Специфікація W3C
- Subresource Integrity на сайті Mozilla Developer Network (MDN)
- SRI на сайті Mozilla Wiki
Це незавершена стаття про вебсайт. Ви можете допомогти проєкту, виправивши або дописавши її. |