Sobes.tech
Назад к вопросам
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-кода.