Запишите WHERE email = $1 и передайте email отдельным аргументом драйверу. Не вставляйте кавычки вокруг $1 и не формируйте SQL через fmt.Sprintf с вводом.
Как безопасно добавить параметр $1 в SQL
Запишите WHERE email = $1 и передайте email отдельным аргументом драйверу. Не вставляйте кавычки вокруг $1 и не формируйте SQL через fmt.Sprintf с вводом.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
В Go с PostgreSQL нужен запрос пользователя по email. Драйвер использует позиционные параметры $1, $2. Как заменить конкатенацию пользовательского ввода параметром?
Ответ
Запишите WHERE email = $1 и передайте email отдельным аргументом драйверу. Не вставляйте кавычки вокруг $1 и не формируйте SQL через fmt.Sprintf с вводом.
Пример вызова: db.QueryRowContext(ctx, "SELECT id FROM users WHERE email = $1", email).Scan(&id). Обработайте отсутствие строки и прочие ошибки отдельно. Параметры подходят для значений, но не для произвольных имён таблиц или направления сортировки: такие части выбирайте из allowlist.