Files
contracts/History/topics/event-sourcing-security-fixes.md
T

36 lines
1.6 KiB
Markdown

# Исправление уязвимостей Event Sourcing — по шагам
**Дата:** 2026-06-22
**Источники:** Gemini Web + Sonnet анализ
**Итог:** все 11 шагов + доп. фиксы выполнены, v1.0.107, сравнение работает.
## Выполненные шаги
| Шаг | Версия | Что | Файл |
|-----|--------|-----|------|
| 1 | v1.0.92 | SQL-инъекция — валидация UUID | convert_server.py |
| 2 | — | Race condition — FOR UPDATE (убран v1.0.100) | apply_events.cfm |
| 3 | v1.0.94 | full_replace guard | apply_events.cfm |
| 4 | v1.0.104 | Идемпотентность + reset_contract.cfm | apply_events.cfm |
| 5 | v1.0.97 | LLM ключ из env | convert_server.py |
| 6 | v1.0.98 | elements_json double-decode | convert_server.py |
| 7 | v1.0.99 | isNumeric валидация | apply_events.cfm |
| 8 | v1.0.101 | Batch SELECT UPDATE | apply_events.cfm |
| 9 | v1.0.102 | UNRESOLVED вместо cfthrow | apply_events.cfm |
| 10 | v1.0.103 | Массовый INSERT full_replace | apply_events.cfm |
| 11 | — | UUID тип — отменён (cf_sql_char ломает PG) | apply_events.cfm |
## Доп. фиксы
| Версия | Что |
|--------|-----|
| v1.0.104 | reset_contract.cfm |
| v1.0.105 | Проверка ответа reset |
| v1.0.106 | Запятая в ADD VALUES |
| v1.0.107 | cf_sql_varchar (UUID cast) |
## Статус
- ✅ v1.0.107 — работает. Summary +N ~N -N ?N. Накопление ОК.
- ⚠️ UPDATE/DELETE без имён в UI (отдельно)
- ⚠️ FOR UPDATE убран (нужен SEQUENCE)