diff --git a/HISTORY/code-review-results-v2.md b/HISTORY/code-review-results-v2.md new file mode 100644 index 0000000..8a5dd24 --- /dev/null +++ b/HISTORY/code-review-results-v2.md @@ -0,0 +1,43 @@ +# Code Review v2 — Результаты (Соннет, 2026-08-09) + +## 1. proxyHandler стриминг — ✅ OK + +Цикл Read/Write/Flush корректен. Обрыв соединения обработан. +⚠️ Нет таймаута — `context.Background()` без дедлайна. При зависании S3 горутина повиснет навсегда. +📎 `?bucket=` в URL игнорируется (безопасно), можно убрать из download_url. + +## 2. /debug — 🔴 КРИТИЧНО + +**Утечка секретов.** Фильтр `strings.Contains(e, "S3_")` захватывает `S3_ACCESS_KEY` и `S3_SECRET_KEY` — выводятся в открытом виде. + +**Фикс:** исключить ключи из вывода. + +## 3. main.go ~430 строк — ✅ OK + +Дробить рано. Порог ~700-1000 строк. gpg_key.go и docs.go уже выделены правильно. + +## 4. embed logo.svg — ✅ OK + +Нормально. SVG < 5KB на бинарник не влияет. + +## 5. S3_PREFIX в Dockerfile — ✅ Конфиг + +ENV в Dockerfile = default, переопределяется через jsonEnv. Не хардкод. + +## 6. defer внутри if — ✅ OK + +defer привязан к функции, не к блоку. Корректно. + +## 7. Dockerfile go.mod/go.sum — ✅ OK + +Канонический паттерн. Билд воспроизводимый. + +## 8. Перед продом + +| # | Проблема | Риск | +|---|----------|------| +| 1 | `/debug` — утечка S3 ключей | 🔴 Критично | +| 2 | `proxyHandler` — нет таймаута на S3 | 🟡 | +| 3 | `proxyHandler` — key не валидируется по s3Prefix | 🟡 | +| 4 | Платформы hardcoded | 🟢 | +| 5 | `readyz` BucketExists без таймаута | 🟡 |