Sobes.tech
Junior — Middle

Ποιες μέθοδοι χρησιμοποιούνται για την αποτροπή ευπαθειών όπως οι SQL-injections κατά την εργασία με βάσεις δεδομένων;

sobes.tech AI

Απάντηση από AI

Για την αποτροπή επιθέσεων SQL injection σε Go κατά την εργασία με βάσεις δεδομένων, χρησιμοποιούνται οι ακόλουθες μέθοδοι:

  • Ερωτήματα με παραμέτρους (προετοιμασμένες δηλώσεις) — αντί να συγχωνεύουμε συμβολοσειρές με το ερώτημα SQL και τα δεδομένα, χρησιμοποιούμε παραμέτρους που περνιούνται ξεχωριστά. Αυτό αποτρέπει την εισαγωγή κακόβουλου κώδικα.

  • Χρήση ORM ή βιβλιοθηκών που αυτομάτως διαφεύγουν τα δεδομένα — π.χ., GORM.

  • Επικύρωση και καθαρισμός των εισερχόμενων δεδομένων — αν και αυτό δεν αντικαθιστά την παραμετροποίηση, βοηθά στη μείωση των κινδύνων.

Παράδειγμα παραμετροποιημένου ερωτήματος με τη χρήση της βασικής βιβλιοθήκης database/sql:

var username string
err := db.QueryRow("SELECT name FROM users WHERE id = ?", userID).Scan(&username)
if err != nil {
    // διαχείριση σφάλματος
}

Εδώ, το ? είναι μια παράμετρος που εισάγεται με ασφάλεια στο ερώτημα, αποτρέποντας την εισβολή.