Назад к вопросам
VK
Middle
1
Расскажи про SQL-инъекции
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
SQL-инъекция — это уязвимость, возникающая при неправильной обработке пользовательского ввода в SQL-запросах. Злоумышленник может вставить в ввод вредоносный SQL-код, который изменит логику запроса, например, получить доступ к данным, изменить или удалить их.
В Go для предотвращения SQL-инъекций рекомендуется использовать подготовленные выражения (prepared statements) и параметризованные запросы, где значения подставляются отдельно от SQL-кода.
Пример безопасного запроса с использованием database/sql:
import (
"database/sql"
_ "github.com/lib/pq" // драйвер для PostgreSQL
)
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
}
Здесь $1 — плейсхолдер для параметра, что исключает возможность внедрения SQL-кода через переменную email.