Sobes.tech
Junior — Middle

Magyarázza el, mit értünk az SQL-kódok alkalmazásba történő beillesztésének módszere alatt, és hogyan lehet ezt megelőzni.

sobes.tech MI

Válasz az MI-től

Az SQL-injekció egy támadási módszer, amely során a támadó rosszindulatú SQL-kódot illeszt be vagy injektál az adatbázis lekérdezéseibe a felhasználó által megadott adatokon keresztül. Ez lehetővé teszi jogosulatlan hozzáférést az adatokhoz, azok módosítását vagy törlését.

A Go alkalmazásokban az SQL-injekciók megelőzése érdekében:

  • Használjon előkészített kifejezéseket (prepared statements) paraméterezéssel, ahol az értékeket külön helyezi el az SQL-kódtól.
  • Kerülje az összefűzést stringekkel az SQL-lekérdezések összeállításához felhasználói adatokkal.
  • Használjon ORM könyvtárakat, amelyek automatikusan kezelik a paramétereket.
  • Validálja és szűrje a felhasználói bemenetet.

Példa egy előkészített kifejezés használatára Go-ban:

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
}

Itt a email paramétert külön adjuk át, ami kizárja a rosszindulatú SQL-kód injektálásának lehetőségét.