Безопасность в 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в репозитории.