Исправить SQL-инъекции в database.js и userService.js #43

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

Проблема

Динамическая подстановка имён таблиц и колонок без санитизации:

  • database.js:59PRAGMA table_info(${tableName})
  • userService.js:47-54Object.keys(userData) вставляется в SQL
  • adminDumpHandler.js:64SELECT * FROM ${table}

Решение

  • Создать whitelist допустимых имён таблиц в database.js
  • Валидировать tableName против whitelist перед подстановкой
  • Переписать userService.updateUser() с явным перечислением колонок
  • Валидировать имена таблиц в adminDumpHandler
  • Добавить тесты для SQL-инъекций

Файлы

  • src/config/database.js
  • src/services/userService.js
  • src/handlers/adminHandlers/adminDumpHandler.js

Приоритет: КРИТИЧЕСКИЙ

## Проблема Динамическая подстановка имён таблиц и колонок без санитизации: - `database.js:59` — `PRAGMA table_info(${tableName})` - `userService.js:47-54` — `Object.keys(userData)` вставляется в SQL - `adminDumpHandler.js:64` — `SELECT * FROM ${table}` ## Решение - [ ] Создать whitelist допустимых имён таблиц в database.js - [ ] Валидировать tableName против whitelist перед подстановкой - [ ] Переписать userService.updateUser() с явным перечислением колонок - [ ] Валидировать имена таблиц в adminDumpHandler - [ ] Добавить тесты для SQL-инъекций ## Файлы - `src/config/database.js` - `src/services/userService.js` - `src/handlers/adminHandlers/adminDumpHandler.js` ## Приоритет: КРИТИЧЕСКИЙ
NW added this to the Phase 1: Security & Secrets Management milestone 2026-06-17 19:39:14 +00:00
NW added the priority::criticaltype::securityphase::1 labels 2026-06-17 19:39:14 +00:00
NW closed this issue 2026-06-17 20:29:51 +00:00
Author
Owner

Реализовано

  • Создать whitelist допустимых имён таблиц в database.js
  • Валидировать tableName против whitelist перед подстановкой
  • Переписать userService.createUser() с whitelist колонок
  • Валидировать имена таблиц в adminDumpHandler
  • Добавить тесты для SQL-инъекций

Файлы: src/config/database.js, src/services/userService.js, src/handlers/adminHandlers/adminDumpHandler.js, src/__tests__/security.test.js

## ✅ Реализовано - [x] Создать whitelist допустимых имён таблиц в database.js - [x] Валидировать tableName против whitelist перед подстановкой - [x] Переписать userService.createUser() с whitelist колонок - [x] Валидировать имена таблиц в adminDumpHandler - [x] Добавить тесты для SQL-инъекций **Файлы**: `src/config/database.js`, `src/services/userService.js`, `src/handlers/adminHandlers/adminDumpHandler.js`, `src/__tests__/security.test.js`
Sign in to join this conversation.