chore(ci+logs): eslint в CI, npm audit, logger с уровнями, retention error_logs
Шаги 1.6 и 1.7 плана production-готовности: - eslint flat-config (баг-ловушки, легаси warn), lint блокирующий в pr-check - npm audit --audit-level=high в CI (отчёт) - фикс реального бага: условный useRef в TaskTitleInline - server/utils/logger.ts (LOG_LEVEL/LOG_FORMAT) в 5 горячих местах - error_logs retention 30 дней (worker), redactSensitive в captureErrorLog - 0 errors lint, vitest 96/96
This commit is contained in:
@@ -83,6 +83,7 @@ export function validateFilename(originalname: string): { valid: boolean; reason
|
||||
// Block path traversal, shell metacharacters, and control characters
|
||||
// Allow Unicode letters (including Cyrillic), digits, spaces, dots, underscores, hyphens, parentheses
|
||||
// (скобки безопасны: сохраняемое имя файла генерируется, оригинальное используется только для отображения)
|
||||
// eslint-disable-next-line no-control-regex -- управляющие символы в имени файла запрещаем осознанно
|
||||
if (/[\/\\&|;$<>\`\"'\x00-\x1f]/.test(namePart) || namePart.includes('..')) {
|
||||
return { valid: false, reason: `Имя файла содержит недопустимые символы: «${namePart.slice(0, 100)}»` };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user