feat(uploads): лимиты загрузки в env, 50 МБ на файл и 200 МБ на запись
Лимиты были захардкожены в четырёх местах фронтенда и в константах multer, из-за чего расходились с текстами ошибок на сервере. - UPLOAD_FILE_LIMIT_MB (50) и UPLOAD_TOTAL_LIMIT_MB (200) читаются из env; оба multer-конфига (upload, adminUpload) берут fileSize из них, тексты ошибок собираются из тех же констант вместо литералов - UPLOAD_REQUEST_TIMEOUT_MS снимает дефолт Node в 5 минут: считается как UPLOAD_TOTAL_LIMIT_MB * 7500, иначе 200 МБ по мобильной сети не успевают - GET /api/public-settings отдаёт upload_file_limit_mb / upload_total_limit_mb, фронтенд читает их вместо собственных констант Проверено на живом стеке: 20 МБ и 180 МБ суммарно принимаются, 55 МБ и 225 МБ отклоняются с верными сообщениями, скачивание 45 МБ из S3 совпадает по sha256 с оригиналом, api.smoketest.js — 57 PASS / 0 FAIL.
This commit is contained in:
@@ -527,7 +527,7 @@ node api.smoketest.js # сквозная проверка API (нужен
|
||||
- **Пароль администратора** обязателен (`ADMIN_PASSWORD`) — он создаёт первого админа в пустой БД; фолбэка на `admin` нет. Самостоятельной роли в API не даёт: доступ только по сессиям.
|
||||
- **CORS отключён** — кросс-доменные запросы к API запрещены.
|
||||
- **Rate limiting** по IP на публичные роуты: `POST /api/entries` — 10 запросов / 15 мин, загрузка файлов и share-ссылки — 300 / 15 мин.
|
||||
- **Загрузки** ограничены: 30 МБ суммарно на запись, 10 МБ на файл; заблокированы опасные расширения (`.html`, `.js`, `.svg`, `.xml`, `.exe` и др.); SVG не отдаётся inline.
|
||||
- **Загрузки** ограничены: суммарно на запись и на файл — лимиты из `UPLOAD_TOTAL_LIMIT_MB` / `UPLOAD_FILE_LIMIT_MB` (по умолчанию 200 МБ и 50 МБ); заблокированы опасные расширения (`.html`, `.js`, `.svg`, `.xml`, `.exe` и др.); SVG не отдаётся inline.
|
||||
- **Restore** проходит полную валидацию данных бэкапа; удаление файлов ограничено каталогом `uploads/`.
|
||||
- **Заголовки**: `helmet` — `X-Frame-Options`, `nosniff`, HSTS, `Referrer-Policy`.
|
||||
- **Порт БД** 5432 наружу не публикуется (доступ только внутри docker-сети).
|
||||
|
||||
Reference in New Issue
Block a user