Files
2026-07-31 22:26:56 +03:00

43 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Август 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-словных повторов в общей партии.