Вы когда-нибудь замечали атрибут целостности в ссылке CDN?

Каковы требования для добавления целостности в jQuery CDN?

‹Скрипт src =” https://code.jquery.com/jquery-3.3.1.min.js 'целостность = ”sha384-tsQFqpEReu7ZLhBV2VZlAu7zcOV + rXbYlF2cqB8txI / 8aZajjp4Bqd + V6TD5I crossover” an ›‹/Script›

Безопасность - Да, безопасность - это основная причина повышения целостности.

Давайте рассмотрим пример, чтобы понять это.

Предположим, в вашем проекте вы используете стороннюю ссылку CDN.

<script src="https://cdn.testjs.com"></script>

Поэтому, когда пользователь загружает ваше приложение в браузере, он извлекает все сценарии и таблицы стилей, которые вы упомянули в тегах script или link. Если автор или CDN будут взломаны, и злоумышленник изменит скрипт и включит какой-то вредоносный код. Тогда ваша клиентская система просто загрузит это с вашего сайта и станет уязвимым для хакеров.

Что такое НИИ?

Целостность субресурсов - это функция безопасности, которая позволяет браузерам проверять, что ресурсы, которые они извлекают (например, из CDN), доставляются без неожиданных манипуляций. Он работает, позволяя вам предоставить криптографический хэш, которому должен соответствовать выбранный ресурс.

Ценность целостности состоит из двух частей. Это выглядит так,

integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="

Префикс включает алгоритм хеширования, который использует, а после дефиса - фактический хеш в кодировке base64. В настоящее время разрешены алгоритмы хеширования: sha256, sha384, sha512.

Эти алгоритмы являются односторонним алгоритмом, т.е. если вы закодировали некоторую строку, вы никогда не сможете вернуть исходную строку с сгенерированным хешем.

Если на вашем локальном компьютере установлен OpenSSL, вы можете сгенерировать свое хеш-значение для любой строки или файла.

Как пользоваться SRI?

Итак, если мы выяснили, каким образом этот браузер получает тот же скрипт, который мы использовали ранее, в противном случае он отклоняет запрос этого скрипта.

Браузер проверяет значение целостности, указанное в теге сценария, со значением целостности сценария, загруженного с сервера. Да, браузер генерирует криптографический хеш этого загруженного файла. Если он совпадает, тогда браузеру разрешено загрузить скрипт, в противном случае он отклоняет запрос.

Автор генерирует sha384 хеш файлов или скрипта. Как правило, третья сторона уже добавила хэш-ключ в CDN. Если кто-то изменит ваши файлы с помощью вредоносного кода, он не пройдет проверку целостности и не будет загружен, потому что после изменения хэш-ключ будет другим.

В JQuery CDN вы уже видели атрибут целостности.

‹Script src =” https://code.jquery.com/jquery-3.4.1.min.js 'целостность = ”sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo =” crossorigin = ”анонимный” ›‹/script›

Поэтому, если кто-то (включая автора) попытается изменить или добавить что-то в скрипт, то для нового хеш-значение будет другим, поэтому им нужно выпустить новую версию с новым хешем.

Это все о базовом введении SRI.

Итак, это базовое вступление к SRI. Я не вдавался в подробности о перекрестном происхождении, алгоритме sha и других вещах, связанных с безопасностью. Надеюсь, вы сочтете это полезным.