This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Производство редакционных партий
|
||||
|
||||
На 31 июля 2026 года строгий аудит проходит 187 из 358 созданных материалов. Остальные 171 не считаются «почти готовыми»: их нужно заменить, а не косметически удлинить.
|
||||
На 31 июля 2026 года строгий аудит проходит 190 из 358 созданных материалов. Остальные 168 не считаются «почти готовыми»: их нужно заменить, а не косметически удлинить.
|
||||
|
||||
## Одна партия
|
||||
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
# П61 · 2023-03 · CSRF и CORS — self-review
|
||||
|
||||
Пакет подготовлен как import-safe replacement для трёх уже существующих slug. В `articles.json`, registry, README и очереди изменений нет: источником ревизий остаётся `web/scripts/upgrade-2023-03.mjs`.
|
||||
|
||||
## 1. Факты и модель
|
||||
|
||||
| Проверка | Evidence | Вердикт |
|
||||
| --- | --- | --- |
|
||||
| Origin не подменён словом «сайт» | Во всех трёх статьях origin описан как tuple scheme, host, port; fixture отклоняет тот же host с port `8443` и path в поле origin. Основание: RFC 6454, декабрь 2011. | PASS |
|
||||
| CORS не объявлен CSRF-защитой | Текст отделяет доступ JavaScript к response от server-side решения о mutation. W3C CORS Recommendation (16.01.2014) отдельно говорит о simple credentialed request и необходимости CSRF-защиты state-changing resource. | PASS |
|
||||
| Credentials и wildcard описаны точно | Для credentialed response указан exact origin плюс `Access-Control-Allow-Credentials: true`; `*` не выдан за допустимый вариант. Это сверено с W3C CORS Recommendation и Fetch snapshot от 24.03.2023. | PASS |
|
||||
| Preflight не выдан за proof intent | Статьи называют его CORS gate для request shape. Контрпримером служит form-shaped POST без custom header: fixture даёт `safelisted-shape`, но серверный контракт возвращает `deny-token`. | PASS |
|
||||
| Fixture не изображает сетевой repro | Комментарий, boundary и статьи прямо фиксируют: нет browser, Fetch, сети, cookie jar, OPTIONS и API. Inputs — заданные labels, а не прочитанный trace. `node … --verify-fixture` прошёл 12/12 assertions. | PASS |
|
||||
| Источники соответствуют периоду | RFC 6454 (2011), W3C CORS Recommendation (2014) и зафиксированный WHATWG Fetch snapshot (24.03.2023) доступны не позднее 2023-03. У каждого указана граница применимости. | PASS |
|
||||
|
||||
Оговорка сохранена в каждой статье: реальный browser/API test с двумя controllable origin и безопасной test session — отдельный артефакт. Его нельзя заменять fixture PASS.
|
||||
|
||||
## 2. Язык, полнота и объём
|
||||
|
||||
| Slug | Основной текст | Содержательные требования | Вердикт |
|
||||
| --- | ---: | --- | --- |
|
||||
| `editorial-2023-03-practice-csrf-cors` | 9 984 знака | проблема и цена в начале; таблица; contract code; figure с alt/caption; маршрут; ограничения; 3 официальных источника | PASS |
|
||||
| `editorial-2023-03-mechanism-csrf-cors` | 9 944 знака | tuple origin, credentials, preflight и CSRF разделены; таблица; code; figure; маршрут; историческая оговорка | PASS |
|
||||
| `editorial-2023-03-field-csrf-cors` | 9 991 знак | диагностика по evidence; таблица «симптом → причина → проверка → действие»; fixture command; figure; ограничения и критерий готовности | PASS |
|
||||
|
||||
Проверен голос М6 для 2023 года: короткая практичная речь, видимые владельцы решений, отрицательные ветки и ограничения рядом с решением. Нет заявлений о выдуманных инцидентах, метриках или результатах команды. `audit:draft` также не нашёл шаблонных оборотов, следов генерации, пропущенных таблиц, code example, figure, источников или ранней постановки проблемы.
|
||||
|
||||
## 3. SVG, доступность и безопасность
|
||||
|
||||
| Проверка | Результат | Вердикт |
|
||||
| --- | --- | --- |
|
||||
| XML | `xmllint --noout` прошёл для трёх SVG. | PASS |
|
||||
| SVG safety | Нет `script`, `foreignObject`, `iframe`, `image`, `href`/external reference, DOCTYPE, ENTITY или inline event handler. У каждого SVG есть уникальные `csrf-cors-2023-*` title/desc и `role="img"`. | PASS |
|
||||
| Статейная доступность | У трёх `<figure>` есть предметные `alt` и caption; `audit:draft` проверил их наличие. | PASS |
|
||||
| Sharp 375 px | Рендеры: 375×250, 375×250 и 375×263. Первый просмотр показал слишком плотные и частично обрезанные подписи; SVG были упрощены и перенесены. Повторный просмотр: заголовки, ветки и финальные действия помещаются без обрезания. | PASS после правки |
|
||||
|
||||
## Команды выпуска
|
||||
|
||||
```text
|
||||
node --check web/scripts/upgrade-2023-03.mjs
|
||||
PASS
|
||||
|
||||
node web/scripts/upgrade-2023-03.mjs --verify-fixture
|
||||
PASS fixture: 12/12 assertions; in-memory contract only
|
||||
|
||||
npm run audit:draft -- scripts/upgrade-2023-03.mjs
|
||||
PASS editorial-2023-03-practice-csrf-cors: 9984 body chars
|
||||
PASS editorial-2023-03-mechanism-csrf-cors: 9944 body chars
|
||||
PASS editorial-2023-03-field-csrf-cors: 9991 body chars
|
||||
|
||||
import-safe export
|
||||
PASS: 3 revisions; date/author absent
|
||||
|
||||
xmllint + SVG safety scan + Sharp 375 px render
|
||||
PASS
|
||||
```
|
||||
|
||||
`npm` напечатал три предупреждения о неизвестных пользовательских config (`store-dir`, `cache-dir`, `public-hoist-pattern`); аудит завершился с кодом 0 и к содержимому пакета они не относятся.
|
||||
|
||||
## Интеграционная приёмка
|
||||
|
||||
- Основной редактор ужесточил `canonicalOrigin()`: origin label с path, query или hash теперь отклоняется до CORS/CSRF-решений. Новая отрицательная ветка фиксирует, что CORS allow-list не является ограничением по URL-path; fixture — PASS 12/12. Исторический Fetch snapshot дополнительно проверен HTTP 200 с `Last-Modified: 24 Mar 2023`.
|
||||
- Ревизии добавлены в `web/data/editorial-revisions.mjs` поверх трёх исходных slug. `web/data/articles.json`, даты и авторы не изменялись; в registry 181 уникальная ревизия без дубликатов.
|
||||
- Строгий аудит `npm run audit:articles -- editorial-2023-03-practice-csrf-cors editorial-2023-03-mechanism-csrf-cors editorial-2023-03-field-csrf-cors` — PASS: у каждой статьи 1 figure, 1 table и 1 code example.
|
||||
- Production-сборка `cd web && npm run build` — PASS: 374 статические страницы. README обновлён с 187/358 до 190/358 принятых материалов; осталось 168.
|
||||
Reference in New Issue
Block a user