Назад к вопросам
Junior — Middle
78
Объясните, что подразумевается под методом внедрения SQL-кодов в приложение и как его предотвратить.
Компании, где спрашивали
Betera Group
Ответ от нейросети
sobes.tech AI
SQL-инъекция — это метод атаки, при котором злоумышленник вставляет или внедряет вредоносный SQL-код в запросы к базе данных через вводимые пользователем данные. Это позволяет получить несанкционированный доступ к данным, изменить или удалить их.
Чтобы предотвратить SQL-инъекции в приложениях на Go, следует:
- Использовать подготовленные выражения (prepared statements) с параметризацией, где значения подставляются отдельно от SQL-кода.
- Избегать конкатенации строк для формирования SQL-запросов с пользовательскими данными.
- Применять ORM-библиотеки, которые автоматически обрабатывают параметры.
- Валидировать и фильтровать пользовательский ввод.
Пример с использованием подготовленного выражения в Go:
import (
"database/sql"
_ "github.com/lib/pq"
)
func getUserByEmail(db *sql.DB, email string) (*User, error) {
var user User
err := db.QueryRow("SELECT id, name FROM users WHERE email = $1", email).Scan(&user.ID, &user.Name)
if err != nil {
return nil, err
}
return &user, nil
}
Здесь параметр email передается отдельно, что исключает возможность внедрения вредоносного SQL-кода.