Ποιες μέθοδοι χρησιμοποιούνται για την αποτροπή ευπαθειών όπως οι 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 {
// διαχείριση σφάλματος
}
Εδώ, το ? είναι μια παράμετρος που εισάγεται με ασφάλεια στο ερώτημα, αποτρέποντας την εισβολή.