Skip to content

Безопасность в Query

Основные рекомендации по безопасности YQL‑запросов в @ydbjs/query.

Инъекции и параметры

  • Всегда используйте шаблонные строки клиента: sql\... ${value} ...`` — значения параметризуются автоматически.
  • Не конкатенируйте пользовательский ввод в строку запроса.
ts
await sql`SELECT * FROM users WHERE id = ${userId}` // безопасно

Динамические идентификаторы

  • Для имён таблиц/колонок используйте identifier(name).
  • Для доверенных фрагментов — unsafe(sql), не передавайте туда пользовательский ввод.

Null/undefined

  • Явно используйте Optional‑типы из @ydbjs/value для nullable‑полей.

Лимиты и валидация

  • Ограничивайте значения LIMIT/OFFSET, валидируйте все входные данные.

Ссылки

  • Подробный гайд: packages/query/SECURITY.md в репозитории.