Добавить валидацию входных данных во всех handlers #47

Closed
opened 2026-06-17 19:39:20 +00:00 by NW · 1 comment
Owner

Проблема

msg.text и другие пользовательские данные вставляются в БД без валидации:

  • Нет лимита длины для имён категорий, локаций
  • Нет проверки на NaN для числовых полей (bonus balance)
  • Нет санитизации product import JSON
  • Нет валидации walletType против whitelist

Решение

  • Расширить src/utils/validators.js — добавить валидаторы для всех типов
  • Валидация длины строк (max 255 для имён, max 1000 для описаний)
  • Валидация чисел (bounds checking, NaN protection)
  • Валидация walletType против whitelist ['BTC', 'LTC', 'ETH', 'USDT', 'USDC']
  • Schema-валидация для product import JSON
  • Применить валидаторы во всех handlers

Файлы

  • src/utils/validators.js
  • src/handlers/adminHandlers/adminProductHandler.js
  • src/handlers/adminHandlers/adminUserHandler.js
  • src/handlers/adminHandlers/adminLocationHandler.js

Приоритет: ВЫСОКИЙ

## Проблема `msg.text` и другие пользовательские данные вставляются в БД без валидации: - Нет лимита длины для имён категорий, локаций - Нет проверки на NaN для числовых полей (bonus balance) - Нет санитизации product import JSON - Нет валидации walletType против whitelist ## Решение - [ ] Расширить `src/utils/validators.js` — добавить валидаторы для всех типов - [ ] Валидация длины строк (max 255 для имён, max 1000 для описаний) - [ ] Валидация чисел (bounds checking, NaN protection) - [ ] Валидация walletType против whitelist `['BTC', 'LTC', 'ETH', 'USDT', 'USDC']` - [ ] Schema-валидация для product import JSON - [ ] Применить валидаторы во всех handlers ## Файлы - `src/utils/validators.js` - `src/handlers/adminHandlers/adminProductHandler.js` - `src/handlers/adminHandlers/adminUserHandler.js` - `src/handlers/adminHandlers/adminLocationHandler.js` ## Приоритет: ВЫСОКИЙ
NW added this to the Phase 1: Security & Secrets Management milestone 2026-06-17 19:39:20 +00:00
NW added the priority::hightype::securityphase::1 labels 2026-06-17 19:39:20 +00:00
NW closed this issue 2026-06-17 20:45:52 +00:00
Author
Owner

Реализовано

  • Расширить src/utils/validators.js — добавить валидаторы для всех типов
  • Валидация длины строк (max 255 для имён, max 1000 для описаний)
  • Валидация чисел (bounds checking, NaN protection, Number.isFinite)
  • Валидация walletType против whitelist [BTC, LTC, ETH, USDT, USDC]
  • Валидация числовых ID (isValidNumericId, isValidTelegramId)
  • Применить валидаторы во всех handlers

Файлы: src/utils/validators.js, src/services/productService.js, src/handlers/adminHandlers/adminProductHandler.js, src/handlers/adminHandlers/adminUserHandler.js, src/handlers/adminHandlers/adminWalletsHandler.js, src/handlers/userHandlers/userProductHandler.js, src/handlers/userHandlers/userWalletsHandler.js

## ✅ Реализовано - [x] Расширить `src/utils/validators.js` — добавить валидаторы для всех типов - [x] Валидация длины строк (max 255 для имён, max 1000 для описаний) - [x] Валидация чисел (bounds checking, NaN protection, Number.isFinite) - [x] Валидация walletType против whitelist [BTC, LTC, ETH, USDT, USDC] - [x] Валидация числовых ID (isValidNumericId, isValidTelegramId) - [x] Применить валидаторы во всех handlers **Файлы**: `src/utils/validators.js`, `src/services/productService.js`, `src/handlers/adminHandlers/adminProductHandler.js`, `src/handlers/adminHandlers/adminUserHandler.js`, `src/handlers/adminHandlers/adminWalletsHandler.js`, `src/handlers/userHandlers/userProductHandler.js`, `src/handlers/userHandlers/userWalletsHandler.js`
Sign in to join this conversation.