security(errors): 5xx без утечки err.message клиенту

Шаг 0.7 плана production-готовности:
- глобальный error handler: нейтральный текст + код инцидента, детали в лог
- route-уровень: зачистка err.message/String(err) в 5xx по 12 файлам,
  оригинальные ошибки логируются с контекстом
This commit is contained in:
2026-09-07 20:42:39 +03:00
parent b3d7923b23
commit 26419f395f
14 changed files with 73 additions and 44 deletions

View File

@@ -87,7 +87,7 @@ export function registerSyncRoutes(app: import("express").Express): void {
});
} catch (err: any) {
console.error('[SYNC] config error:', err);
res.status(500).json({ success: false, error: err.message || 'Ошибка получения конфигурации синхронизации' });
res.status(500).json({ success: false, error: 'Ошибка получения конфигурации синхронизации' });
}
});
@@ -221,7 +221,7 @@ export function registerSyncRoutes(app: import("express").Express): void {
});
} catch (err: any) {
console.error('[SYNC] initial error:', err);
res.status(500).json({ success: false, error: err.message || 'Ошибка начальной синхронизации' });
res.status(500).json({ success: false, error: 'Ошибка начальной синхронизации' });
}
});
@@ -310,7 +310,7 @@ export function registerSyncRoutes(app: import("express").Express): void {
});
} catch (err: any) {
console.error('[SYNC] delta error:', err);
res.status(500).json({ success: false, error: err.message || 'Ошибка дельта-синхронизации' });
res.status(500).json({ success: false, error: 'Ошибка дельта-синхронизации' });
}
});
@@ -346,7 +346,7 @@ export function registerSyncRoutes(app: import("express").Express): void {
res.json({ success: true, accepted, conflicts });
} catch (err: any) {
console.error('[SYNC] push error:', err);
res.status(500).json({ success: false, error: err.message || 'Ошибка приёма offline-мутаций' });
res.status(500).json({ success: false, error: 'Ошибка приёма offline-мутаций' });
}
});