Генератор SRI-хешів
Обчисліть Subresource Integrity хеш для будь-якого JS чи CSS файлу та отримайте готовий до вставки script або link тег.
Результат
Subresource Integrity (SRI) дозволяє браузеру перевірити, що скрипт чи стиль, завантажений з CDN або стороннього хосту, не був змінений перед виконанням — браузер хешує завантажені байти і відмовляється виконувати файл, якщо дайджест не збігається з опублікованим атрибутом integrity. Цей інструмент обчислює такий дайджест для будь-якого JS чи CSS файлу, який ви завантажите, повністю у вашому браузері — сам файл не потрібно нікуди відправляти для хешування.
Звичайний інструмент хешування не дасть придатного значення SRI: специфікація вимагає base64-кодованого дайджесту, а не hex-рядка, який видає більшість чекерів контрольних сум, і визнає лише три алгоритми — sha256, sha384 та sha512. Цей генератор обмежує вибір алгоритму саме цими трьома і кодує результат правильним способом, а потім йде на крок далі, складаючи повний HTML-тег навколо нього, з полем-заповнювачем src або href, яке можна відредагувати перед копіюванням.
Під капотом файл читається через File API, хешується нативною реалізацією crypto.subtle.digest(), а отримані байти конвертуються у base64 невеликими порціями, а не однією великою операцією розгортання масиву — деталь, яка стає важливою, коли зібраний JS-файл переростає приблизно сто тисяч байтів, де наївні підходи до конвертації можуть впертися в обмеження стека виклику браузера.
sha384 обрано за замовчуванням, оскільки це алгоритм, який найчастіше рекомендують у прикладах та документації SRI, балансуючи довжину дайджесту з стійкістю до колізій, але sha256 і sha512 доступні в один клік, якщо ваш білд-пайплайн чи CDN-провайдер вимагає іншого.