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.