Веб и безопасность приложений · проверено по источникам

Хеши обработчиков событий CSP

unsafe-hashes — выражение CSP, расширяющее применение хешей к обработчикам событий и некоторым другим встроенным контекстам. Оно разрешает совпадающий текст, а не удостоверяет желаемый способ его запуска.

Также ищут: CSP unsafe-hashes · unsafe-hashes · разрешение обработчика по хешу

Практический смысл

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

Это важно при переносе старых интерфейсов с обработчиками в HTML. Разрешённая строка с чувствительным действием может оказаться пригодной для другого запуска, поэтому хеш не заменяет проверку контекста и полномочий.

Доказательная часть

Что подтверждено

  1. Обычное сопоставление хеша встроенного script не применяется автоматически к обработчикам в атрибутах. Выражение unsafe-hashes расширяет эту ветку сопоставления на обработчики, атрибуты стиля и переходы с программой в адресе.

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.3.3. Описывает область алгоритма, а не рекомендацию использовать исполняемые адреса или атрибуты.

  2. Проверка nonce в алгоритме встроенного кода относится к элементам script и style, а не к атрибутам обработчиков. Поэтому nonce на HTML-элементе сам по себе не даёт обработчику события тот же допуск.

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.3.3. Не утверждает, что nonce обезвреживает данные обработчика или доказывает событие пользователя.

  3. В примере unsafe-hashes разрешается хеш текста самого обработчика, например вызова doSubmit(), а не всей кнопки с её атрибутами. Изменение текста обработчика требует заново проверить соответствие разрешённому хешу.

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.3.3 и пример 8.3. Имя функции в примере условное; приведённый способ не является доказательством её безопасного поведения.

  4. Разрешение хеша подтверждает допуск определённого текста, но не гарантирует, что он выполнится ожидаемым способом. Пояснение CSP приводит риск переноса разрешённого чувствительного вызова из обработчика в отдельный встроенный script с тем же текстом.

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, предупреждение 8.3 и 6.7.3.3. Условие — допускающая этот хеш политика для соответствующего контекста; специальная другая директива может дополнительно запретить исполнение.

  5. Допуск старого обработчика по хешу не делает исполняемый атрибут безопасным местом для непроверенных данных. Для новых страниц пояснение CSP рекомендует избегать unsafe-hashes; кодирование и безопасные точки вывода выбирают по реальному контексту.

    Граница применимости: Пояснение 8.3 проекта CSP 3 от 13 августа 2026 года и принятые рекомендации OWASP по XSS; рекомендация не представлена как безусловный запрет стандарта.

Граница терминов

Не путать

Одноразовое значение CSP (nonce)

Nonce сопоставляет значение элемента script или style. Для обработчика в атрибуте действует другой путь допуска; простое добавление nonce к кнопке его не создаёт.

Контекстное кодирование вывода

Хеш допускает определённый код, а контекстное кодирование помогает вывести данные. Эти меры не превращают исполняемый атрибут в инертный атрибут в кавычках.

Перед спецификацией

Что проверить

  1. Установите необходимость сохранения старого обработчика.
  2. Найдите эффективную директиву атрибутов.
  3. Проверьте наличие unsafe-hashes и точный текст обработчика.
  4. Не заменяйте этот путь обычным nonce на элементе.
  5. Оцените возможность запуска разрешённого текста в другом контексте.
  6. Не вставляйте непроверенные данные в исполняемый атрибут.
  7. Проверяйте полномочия чувствительной операции независимо от допуска скрипта.
Открытые основания

Первоисточники

  • Первичная спецификация

    Content Security Policy Level 3

    World Wide Web Consortium · W3C Working Draft, 13 August 2026

    Прочитана сохранённая локальная HTML-копия. Алгоритмы разделов 6–7 отделены от ненормативных примеров раздела 8; редакция проекта не означает проверку поддержки каждого браузера.

    Открыть первоисточник
  • Официальная документация

    Cross Site Scripting Prevention Cheat Sheet

    OWASP Foundation · OWASP Cheat Sheet Series, checked 30 August 2026

    Определяет context-specific output encoding и safe sinks; CSP и WAF рассматривает как дополнительные, а не основные XSS controls.

    Открыть первоисточник
  • Первичная спецификация

    Content Security Policy Level 3

    World Wide Web Consortium · W3C Working Draft, 5 May 2026

    Определяет CSP directives, source lists, nonce-source и browser enforcement для загрузки и исполнения content.

    Открыть первоисточник
Сообщить об ошибке

Опишите проблему — постараемся исправить как можно скорее.

Спасибо!

Получили ваше сообщение.
Подтвердите действие