Генератор на SRI хеш
Генерирайте хешове Subresource Integrity (SRI) sha384 за JavaScript или CSS файл и копирайте готовите атрибути integrity и crossorigin, локално в браузъра.
Поставете съдържанието на файла или отворете самия файл: този инструмент не изтегля адреси. Четенето на скрипт от друг сайт би изисквало този сървър да го позволява (CORS) или наш собствен сървър да го изтегли вместо вас, а нищо от хешираното тук никога не напуска вашия браузър. Хеширайте точния файл, който ще публикувате.
Текстът се хешира като UTF-8. Браузърите превръщат windows краищата на редовете (CRLF) в LF в поставения текст, а един променен байт нарушава хеша: при съмнение отворете самия файл.
Адресът само се записва в кода, никога не се заявява. Оставете го празен, за да се използва името на файла.
Как да генерирате SRI хеш
- В Хеш на изберете Поставен код или Файлове.
- Поставете точното съдържание на скрипта или стиловия файл в Съдържание на скрипт или стилов файл и натиснете Генерирай SRI хеш или пуснете един или повече файлове
.jsи.cssв зоната за пускане. Хешовете се обновяват, докато пишете. - Оставете отметнат SHA-384 (препоръчително) или добавете SHA-256 и SHA-512. Всеки отметнат алгоритъм добавя по един елемент към стойността.
- Изберете Таг (автоматично по името на файла,
<script>,<script type="module">или<link rel="stylesheet">), въведете Адрес на ресурса за кода (по избор) и изберете режимаcrossorigin. - Копирайте стойност на integrity или целия таг.
- За да проверите таг, който вече използвате, поставете стойността му или целия таг в Проверка на съществуваща стойност integrity (по избор).
Какво прави Subresource Integrity
Когато една страница зарежда скрипт от CDN, браузърът се доверява на всичко, което сървърът върне. Ако CDN е компрометиран или файлът е променен, модифицираният код се изпълнява с пълен достъп до вашата страница. Subresource Integrity (W3C SRI) затваря тази дупка: публикувате очаквания хеш на файла в атрибута integrity, браузърът хешира каквото изтегли и отказва да изпълни скрипта или да приложи стиловия файл, ако двата хеша се различават.
<script src="https://cdn.example.com/lib.min.js"
integrity="sha384-H8BRh8j48O9oYatfu5AZzq6A9RINhZO5H16dQZngK7T62em8MUt1FLm52t+eX6xO"
crossorigin="anonymous"></script>
Стойността е името на алгоритъма, тире и Base64 кодираният хеш на байтовете на файла. Този пример е хешът на alert('Hello, world.'); от спецификацията на SRI. Когато са изброени няколко хеша, браузърите гледат само най-силния наличен алгоритъм и приемат файла, ако някой хеш от този алгоритъм съвпада. Така един сайт може да изброи две версии на файл по време на преминаване.
Защо crossorigin е задължителен
За файл от друг произход браузърът може да провери целостта му само ако отговорът е изтеглен в режим CORS, затова тагът се нуждае от атрибут crossorigin, а сървърът трябва да отговаря със заглавие Access-Control-Allow-Origin. Използвайте anonymous (без бисквитки) за публични CDN; use-credentials е за редки частни ресурси. Без CORS браузърът блокира файла, вместо да го зареди непроверен.
Защо този инструмент не изтегля адреси
Този инструмент хешира само код, който поставяте, или файлове, които отваряте. Изтеглянето на скрипт от адреса му в самата страница би работило само когато този сървър позволява четене от друг произход, а заобикалянето на това би изисквало сървър да изтегли файла вместо вас, който би видял и какво хеширате. Всичко тук се изпълнява във вашия браузър. Най-простият метод е да изтеглите точния файл, който ще използвате (същата версия и същата умалена компилация), и да го отворите тук.
Често задавани въпроси
Кой алгоритъм да използвам?
SHA-384 е обичайният избор и това, което публикуват повечето CDN. SHA-256 и SHA-512 също се поддържат от всички съвременни браузъри. MD5 и SHA-1 не са позволени в SRI.
Хешът ми е верен, но браузърът пак блокира файла. Защо?
Проверете дали сървърът изпраща Access-Control-Allow-Origin и дали тагът има crossorigin. Уверете се и че CDN връща същите байтове: различна версия, автоматичен минимизатор или липсващ краен нов ред променят хеша.
Защо поставеният код дава различен хеш от файла?
Браузърите превръщат windows краищата на редовете (CRLF) в LF в текстовите полета, а редакторът може да добави или премахне маркер за последователност на байтовете или краен нов ред. Отворете самия файл, за да хеширате точните му байтове.
Нужен ли ми е SRI за файлове в собствения ми домейн?
Той предпазва от промени, направени след изчисляването на хеша, така че е най-важен за външни хостове. За собствените ви файлове обикновено е по-лесно пакетиращ инструмент, който генерира хешовете при компилация.
Работи ли SRI за изображения или шрифтове?
Атрибутът integrity се поддържа в <script> и <link rel="stylesheet"> (и в <link rel="preload"> или modulepreload за тях). Изображенията и шрифтовете не могат да го използват.
Сродни инструменти
- Генератор на хеш (MD5, SHA-256) Генерирайте MD5, SHA-1, SHA-256 и SHA-512 хешове на текст или файлове с произволен размер и проверявайте контролни суми. Всичко работи във вашия браузър.
- Base64 кодиране и декодиране Безплатно Base64 кодиране и декодиране с пълна поддръжка на UTF-8 и вариант base64url. Работи във вашия браузър, нищо не се качва на сървър.
- Преглед на HAR файлове Отворете HAR файл във вашия браузър, за да видите заявки, заглавия, бисквитки, времена и водопад, и го почистете преди споделяне. Нищо не се качва.