43 lines
6.2 KiB
Markdown
43 lines
6.2 KiB
Markdown
# Август 2027 — техническая вычитка web security
|
||
|
||
Пакет состоит из трёх самостоятельных материалов: про проверку security headers, измерение Web Vitals и эксплуатационную карточку с rollback. Исторические slug сохранены. В HTML-телах нет редакционных планов, описания автора, внутренних статусов или отчёта о создании текста.
|
||
|
||
## Проход 1 — факты, пример и источники
|
||
|
||
| Статья | До | После | Правка |
|
||
|---|---|---|---|
|
||
| Practice | Карточка решения говорила о «контроле» без конкретного web-объекта. | buildSecurityHeaders возвращает CSP nonce, object-src none, base-uri self и HSTS с явным ограничением первого HTTP-перехода. | Пример проверяет реальные директивы, а не абстрактный статус безопасности. |
|
||
| Mechanism | Метрики описывались как общий показатель качества страницы. | classifyWebVitals отдельно проверяет LCP, INP и CLS; текст различает field/lab и p75 по сегменту. | Порог не выдаётся за причинность и не смешивается с UX-выводом. |
|
||
| Field | Runbook был рассуждением о корректирующем процессе. | validateRunbookCard требует symptom, scope, precondition, action, rollback, verification и observable результата. | Инструкция получает проверяемый вход и условие завершения. |
|
||
|
||
Источники проверены как первичные: [CSP Level 3](https://www.w3.org/TR/CSP3/), [RFC 6797 HSTS](https://www.rfc-editor.org/rfc/rfc6797.html), [Web Vitals](https://web.dev/articles/vitals), [W3C Performance Timeline](https://www.w3.org/TR/2025/CRD-performance-timeline-20250521/) и [NIST SP 800-61r2](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-61r2.pdf). В каждой статье отдельно указано, что источник определяет и чего не доказывает о конкретном приложении.
|
||
|
||
## Проход 2 — структура, голос и проверяемость
|
||
|
||
| Статья | До | После | Правка |
|
||
|---|---|---|---|
|
||
| Practice | Заголовок и вступление обещали «безопасность» без симптома. | Первые абзацы называют XSS/downgrade, цену ошибки и маршрут Report-Only → enforce; далее идут карта ресурсов, таблица директив и ограничения. | Открытие отвечает на вопрос читателя и не обещает абсолютную защиту. |
|
||
| Mechanism | LCP, INP и CLS шли одним списком. | Для каждой метрики добавлены пользовательский вопрос, порог, диагностический разрез и следующий тест. | Короткая речь привязана к действию, а не к каталогу терминов. |
|
||
| Field | Runbook заканчивался советом «проверить результат». | Добавлены precondition, обратимое действие, rollback, owner-free verification и критерий закрытия. | Команда не считается восстановлением без наблюдаемого результата. |
|
||
|
||
Примеры запускаются над локальными данными и чистыми функциями. В коде нет обращения к сети, файловой системе, секретам, часам или security tooling. Поэтому статьи объясняют механизм и форму проверки, но не выдают fixture за evidence конкретного сервиса.
|
||
|
||
## Проход 3 — визуал, доступность и выпускная вычитка
|
||
|
||
| Статья | До | После | Правка |
|
||
|---|---|---|---|
|
||
| Practice | Граф показывал внутреннюю карту решений. | SVG разделяет CSP и HSTS и ведёт неизвестный ресурс в stop-ветку; title, desc, alt и caption называют границу. | Рисунок объясняет объект защиты. |
|
||
| Mechanism | Матрица была общей quality rubric. | SVG показывает LCP/INP/CLS, вопрос, порог и диагностический срез на ширине 375 px. | Визуал помогает выбрать следующий замер. |
|
||
| Field | Петля revision не показывала условие завершения. | SVG ведёт Symptom → Precondition → Action → Verify и отдельно показывает rollback. | Рисунок закрепляет обратимость и проверку результата. |
|
||
|
||
Три SVG прошли XML и safety scan: нет script, foreignObject, javascript:, data:image и event handlers. Sharp-рендер на 375 px проверен визуально: подписи, стрелки и стоп-ветки не обрезаны. В HTML у каждой статьи есть таблица с caption/thead/scope, runnable-пример и ordered route.
|
||
|
||
## Итоговые проверки
|
||
|
||
- node --check scripts/upgrade-2027-08.mjs — PASS.
|
||
- node scripts/upgrade-2027-08.mjs --verify-fixture — PASS, 7/7.
|
||
- npm run audit:draft -- scripts/upgrade-2027-08.mjs — PASS, 3/3 exact slugs.
|
||
- npm run audit:articles для трёх августовских slug — PASS.
|
||
- xmllint --noout, SVG safety scan и Sharp 375 px — PASS для трёх assets.
|
||
- Cross-scan body с включённым code и исключёнными source lists — без 12-словных повторов в общей партии.
|