Sobes.tech
Back to questions
Middle
2

Расскажи про SQL-инъекции

Companies where asked
VKVK

Answer from AI

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.