Nonce сопоставляет значение элемента script или style. Для обработчика в атрибуте действует другой путь допуска; простое добавление nonce к кнопке его не создаёт.
Хеши обработчиков событий CSP
Определение
Разрешение обработчика по хешу (unsafe-hashes) — выражение политики CSP, которое распространяет сверку по хешу на обработчики в атрибутах, атрибуты стиля и ссылки с кодом в адресе. Хеш разрешает конкретный текст, но не подтверждает, что он запустится ожидаемым способом.
Также ищут: CSP unsafe-hashes · unsafe-hashes · разрешение обработчика по хешу
Зачем это знать
Это важно при переносе старых интерфейсов с обработчиками в HTML. Разрешённая строка с чувствительным действием может оказаться пригодной для другого запуска, поэтому хеш не заменяет проверку контекста и полномочий.
Карта понятия
Что подтверждено
Обычное сопоставление хеша встроенного script не применяется автоматически к обработчикам в атрибутах. Выражение unsafe-hashes расширяет эту ветку сопоставления на обработчики, атрибуты стиля и переходы с программой в адресе.
Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.3.3. Описывает область алгоритма, а не рекомендацию использовать исполняемые адреса или атрибуты.
Проверка nonce в алгоритме встроенного кода относится к элементам script и style, а не к атрибутам обработчиков. Поэтому nonce на HTML-элементе сам по себе не даёт обработчику события тот же допуск.
Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.3.3. Не утверждает, что nonce обезвреживает данные обработчика или доказывает событие пользователя.
В примере unsafe-hashes разрешается хеш текста самого обработчика, например вызова doSubmit(), а не всей кнопки с её атрибутами. Изменение текста обработчика требует заново проверить соответствие разрешённому хешу.
Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.3.3 и пример 8.3. Имя функции в примере условное; приведённый способ не является доказательством её безопасного поведения.
Разрешение хеша подтверждает допуск определённого текста, но не гарантирует, что он выполнится ожидаемым способом. Пояснение CSP приводит риск переноса разрешённого чувствительного вызова из обработчика в отдельный встроенный script с тем же текстом.
Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, предупреждение 8.3 и 6.7.3.3. Условие — допускающая этот хеш политика для соответствующего контекста; специальная другая директива может дополнительно запретить исполнение.
Допуск старого обработчика по хешу не делает исполняемый атрибут безопасным местом для непроверенных данных. Для новых страниц пояснение CSP рекомендует избегать unsafe-hashes; кодирование и безопасные точки вывода выбирают по реальному контексту.
Граница применимости: Пояснение 8.3 проекта CSP 3 от 13 августа 2026 года и принятые рекомендации OWASP по XSS; рекомендация не представлена как безусловный запрет стандарта.
Не путать
Хеш допускает определённый код, а контекстное кодирование помогает вывести данные. Эти меры не превращают исполняемый атрибут в инертный атрибут в кавычках.
Что проверить
- Установите необходимость сохранения старого обработчика.
- Найдите эффективную директиву атрибутов.
- Проверьте наличие unsafe-hashes и точный текст обработчика.
- Не заменяйте этот путь обычным nonce на элементе.
- Оцените возможность запуска разрешённого текста в другом контексте.
- Не вставляйте непроверенные данные в исполняемый атрибут.
- Проверяйте полномочия чувствительной операции независимо от допуска скрипта.
Первоисточники
- Cross Site Scripting Prevention Cheat Sheet
Определяет context-specific output encoding и safe sinks; CSP и WAF рассматривает как дополнительные, а не основные XSS controls.
Утверждения: 05
- Content Security Policy Level 3
Определяет CSP directives, source lists, nonce-source и browser enforcement для загрузки и исполнения content.