Перейти к содержанию

Проверка использования SRI (Subresource Integrity) для валидации целостности внешних ресурсов

Описание

Это требование подразумевает, что если активы приложения (например, JavaScript, CSS или изображения) размещаются на внешних CDN (Content Delivery Network) или других внешних провайдерах, необходимо использовать механизм Subresource Integrity (SRI) для проверки целостности этих ресурсов. SRI позволяет браузерам проверять, что загружаемые ресурсы не были изменены, что помогает защитить приложение от атак, таких как подмена ресурсов.

Почему это важно

  1. Защита от подмены ресурсов: Использование SRI помогает предотвратить загрузку измененных или вредоносных версий ресурсов, что может привести к уязвимостям.
  2. Улучшение безопасности: SRI добавляет дополнительный уровень безопасности при использовании внешних ресурсов, что особенно важно в условиях современных угроз.
  3. Соблюдение стандартов безопасности: Многие отрасли требуют использования механизмов проверки целостности для защиты данных и ресурсов.

Способы реализации с примерами

Генерация хешей для ресурсов: При добавлении внешних ресурсов используйте инструменты для генерации хешей, которые будут использоваться в атрибуте integrity.

Пример:

# Пример генерации хеша с помощью OpenSSL
openssl dgst -sha384 -binary your-script.js | openssl base64 -A

Использование SRI в HTML: Добавьте атрибут integrity к тегам <script> и <link>, указывая сгенерированный хеш.

Пример:

<!-- Пример использования SRI для JavaScript -->
<script src="https://cdn.example.com/your-script.js" integrity="sha384-<hash>" crossorigin="anonymous"></script>

<!-- Пример использования SRI для CSS -->
<link rel="stylesheet" href="https://cdn.example.com/your-styles.css" integrity="sha384-<hash>" crossorigin="anonymous">

Проверка целостности ресурсов: Убедитесь, что браузер проверяет целостность загружаемых ресурсов, и в случае несоответствия хеша блокирует их загрузку.

Пример:

  • Если ресурс был изменен и хеш не совпадает, браузер не загрузит его и выведет ошибку в консоли.

Примеры уязвимого кода

<!-- Пример уязвимого кода на HTML -->
<script src="https://cdn.example.com/your-script.js"></script>  <!-- Отсутствие SRI -->

Проблема: В этом коде отсутствует атрибут integrity, что делает приложение уязвимым для атак, связанных с подменой ресурсов.

Причины, к которым может привести несоблюдение требования

  1. Уязвимость к подмене ресурсов: Отсутствие SRI может позволить злоумышленникам подменить ресурсы на вредоносные версии.
  2. Проблемы с доверием: Пользователи могут потерять доверие к системе, если они столкнутся с проблемами безопасности, связанными с подменой ресурсов.
  3. Проблемы с производительностью: Измененные ресурсы могут негативно сказаться на производительности приложения.

Рекомендации

  • Всегда используйте SRI для проверки целостности внешних ресурсов, загружаемых через CDN или других провайдеров.
  • Генерируйте хеши для всех внешних ресурсов и добавляйте их в атрибут integrity.
  • Регулярно проверяйте и обновляйте хеши при изменении внешних ресурсов.
  • Обучайте команду разработчиков о важности использования SRI и других механизмов безопасности при работе с внешними ресурсами.