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