Какова цель атрибута целостности в HTML?
Я был на сайте начальной загрузки и недавно заметил, что их ссылки CDN содержат атрибут целостности с ключом SHA-384.
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
Я предполагаю, что это должен быть способ проверки источника скрипта, но более того мне было интересно, как он используется и является ли это частью какой-либо спецификации?
Кроме того, это работает только со скриптами src или может работать с любым источником не того же происхождения?
3 ответа
Проверь это:
https://developer.mozilla.org/en/docs/Web/HTML/Element/script
Использование сетей доставки контента (CDN) для размещения файлов, таких как сценарии и таблицы стилей, которые совместно используются несколькими сайтами, может повысить производительность сайта и сохранить пропускную способность. Однако использование CDN также сопряжено с риском, так как если злоумышленник получает контроль над CDN, злоумышленник может внедрить произвольный вредоносный контент в файлы в CDN (или полностью заменить файлы) и, таким образом, потенциально может атаковать все сайты, которые извлекают данные. файлы из этого CDN.
Функция целостности подресурса позволяет вам снизить риск таких атак, гарантируя, что файлы, загружаемые вашим веб-приложением или веб-документом (из CDN или где-либо еще), были доставлены без добавления сторонним содержимым сторонних лиц. файлы - и без каких-либо других изменений в этих файлах.
Узнайте больше здесь:
https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity
Использование сетей доставки контента (CDN) для размещения файлов, таких как сценарии и таблицы стилей, которые совместно используются несколькими сайтами, может повысить производительность сайта и сохранить пропускную способность. Однако использование CDN также сопряжено с риском, так как если злоумышленник получает контроль над CDN, злоумышленник может внедрить произвольный вредоносный контент в файлы в CDN (или полностью заменить файлы) и, таким образом, потенциально может атаковать все сайты, которые извлекают данные. файлы из этого CDN.
Функция целостности подресурса позволяет вам снизить риск таких атак, гарантируя, что файлы, загружаемые вашим веб-приложением или веб-документом (из CDN или где-либо еще), были доставлены без добавления сторонним содержимым сторонних лиц. файлы - и без каких-либо других изменений в этих файлах.
Использование подресурса IntegrityEDIT
Вы используете функцию целостности подресурса, указывая криптографический хэш ресурса (файла) в кодировке base64, который вы указываете браузеру для выборки, в значении атрибута целостности любого <script>
или же <link>
элемент.
Значение целостности начинается, по крайней мере, с одной строки, причем каждая строка содержит префикс, указывающий конкретный алгоритм хеширования (в настоящее время разрешенными префиксами являются sha256, sha384 и sha512), за которым следует тире, и заканчивается фактическим хэшем в кодировке base64.
Значение целостности может содержать несколько хэшей, разделенных пробелами. Ресурс будет загружен, если он соответствует одному из этих хэшей.
Пример строки целостности с хэшем sha384 в кодировке base64:
SHA384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC
Часть "хэш" значения целостности, строго говоря, представляет собой криптографический дайджест, сформированный путем применения определенной хеш-функции к некоторому входному элементу (например, к файлу скрипта или таблицы стилей). Но обычно используется сокращенный хеш для обозначения криптографического дайджеста, так что это то, что используется в этой статье.
Для получения дополнительной информации: Ссылка
Подресурсная целостность определяет механизм, с помощью которого пользовательские агенты могут проверить, что извлеченный ресурс был доставлен без неожиданной ссылки на манипуляции
Атрибут целостности позволяет браузеру проверять источник файла, чтобы гарантировать, что код никогда не загружается, если источником манипулировали.
Атрибут Crossorigin присутствует, когда запрос загружается с использованием "CORS", что теперь является требованием проверки SRI, когда он не загружен из "того же источника". Больше информации о кроссоригине
Подробнее о реализации Bootstrap CDN здесь