Nonce сопоставляет значение элемента script или style. Для обработчика в атрибуте действует другой путь допуска; простое добавление nonce к кнопке его не создаёт.
Почему это важно
Это важно при переносе старых интерфейсов с обработчиками в 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 на элементе.
- Оцените возможность запуска разрешённого текста в другом контексте.
- Не вставляйте непроверенные данные в исполняемый атрибут.
- Проверяйте полномочия чувствительной операции независимо от допуска скрипта.
Первоисточники
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.
Открыть первоисточник