security: forbid inline style attributes
This commit is contained in:
@@ -5,14 +5,13 @@
|
||||
## Временные inline-зависимости
|
||||
|
||||
- динамический JSON-LD в `Layout.astro` остаётся единственным намеренно inline script;
|
||||
- вычисляемые CSS custom properties для шкалы активности и timeline.
|
||||
|
||||
Vite собирает даже малые page scripts и scoped Astro styles в same-origin `_astro` assets (`assetsInlineLimit: 0`). Поэтому `style-src` уже ограничен `'self'`; временный `unsafe-inline` остаётся только для динамического JSON-LD в `script-src` и вычисляемых style attributes. Inline event handlers запрещены `script-src-attr 'none'`; `unsafe-eval`, wildcard, HTTP и сторонние connect/script origin отсутствуют.
|
||||
Vite собирает даже малые page scripts и scoped Astro styles в same-origin `_astro` assets (`assetsInlineLimit: 0`). Динамические шкалы используют дискретные CSS-классы вместо style attributes, поэтому `style-src` ограничен `'self'`, а `style-src-attr` — `'none'`. Временный `unsafe-inline` остаётся только для динамического JSON-LD в `script-src`. Inline event handlers запрещены `script-src-attr 'none'`; `unsafe-eval`, wildcard, HTTP и сторонние connect/script origin отсутствуют.
|
||||
|
||||
## Путь к nonce/hash
|
||||
|
||||
1. Page scripts перенесены в собираемые клиентские модули; конфигурация формы передаётся через безопасный `data-state`. Нулевой inline limit запрещает Vite встраивать малые модули обратно в HTML.
|
||||
2. JSON-LD либо хэшировать на уровне SSR-заголовка, либо выдавать nonce из web-runtime; статический nonce запрещён.
|
||||
3. Scoped styles уже находятся в скомпилированных `_astro` assets, и `unsafe-inline` удалён из `style-src`; вычисляемые значения заменить классами/`data-*`.
|
||||
4. Удалить `unsafe-inline` из `script-src` после решения JSON-LD; `style-src-attr` убрать последним.
|
||||
3. Scoped styles находятся в скомпилированных `_astro` assets, вычисляемые шкалы используют классы с шагом 5%; inline-разрешения для styles и attributes удалены.
|
||||
4. Удалить последнее `unsafe-inline` из `script-src` после решения JSON-LD.
|
||||
5. Проверить report, spots, admin, JSON-LD и signed screenshots в production bootstrap. Не добавлять `blob:`, `*` или произвольные CDN для устранения ошибок.
|
||||
|
||||
Reference in New Issue
Block a user