harden anti-spam and file serving; backup restore to disk; json body limit
- Add honeypot field to public submission form + server-side check - Serve shared files only in context of a valid share link (/api/share/:shareToken/files/:fileToken) - Switch backup restore upload to diskStorage (50MB) with temp-dir cleanup - Limit JSON body to 1mb - Document fixed audit items
This commit is contained in:
@@ -26,12 +26,11 @@ function requireAdmin(req, res, next) {
|
||||
---
|
||||
|
||||
### 2. Файлы доступны анонимно по токену
|
||||
**Файлы:** `server.js:877-885`, `server.js:49`
|
||||
- `GET /api/files/:token` и статика `/uploads/*` отдают любой файл любому, кто знает токен.
|
||||
- Токены криптостойкие (32 hex), но **фото детей и учебные проекты не должны быть публично доступны по угадываемому ключу**.
|
||||
- Share-ссылки (`/api/share/:token`) также выдают все файлы записи.
|
||||
**Статус:** 🟢 Частично исправлено (share-файлы привязаны к ссылке)
|
||||
- ✅ Публичные share-файлы теперь отдаются **только** через `GET /api/share/:shareToken/files/:fileToken`, где проверяется принадлежность файла к записям активной ссылки (expiry, пароль, фильтры группы/имени/периода) — `server.js:612-647`.
|
||||
- ⚠️ `GET /api/files/:token` и статика `/uploads/*` по-прежнему доступны по токену (нужны для админ-панели). Токены криптостойкие (16 байт hex).
|
||||
|
||||
**Рекомендация:** отдавать файлы только в контексте действующей share-ссылки (проверка принадлежности entry к ссылке) либо подписанные URL с TTL.
|
||||
**Файлы:** `server.js:612-647`, `public/share.html:106-121`
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user