Πίνακας περιεχομένων:
Ορισμός - Τι σημαίνει SQL Injection;
Μια έγχυση SQL είναι μια επίθεση στον υπολογιστή, στην οποία ο κακόβουλος κώδικας είναι ενσωματωμένος σε μια κακώς σχεδιασμένη εφαρμογή και στη συνέχεια διαβιβάζεται στη βάση δεδομένων backend. Τα κακόβουλα δεδομένα παράγουν έπειτα αποτελέσματα ερωτήματος βάσης δεδομένων ή ενέργειες που δεν θα έπρεπε ποτέ να εκτελεστούν.
Η Techopedia εξηγεί την SQL Injection
Ας δούμε ένα παράδειγμα μιας επίθεσης ένεσης SQL:
Μια εφαρμογή που εκτελεί εργασίες μιας τράπεζας περιέχει μενού που μπορούν να χρησιμοποιηθούν για την αναζήτηση στοιχείων του πελάτη χρησιμοποιώντας σημεία δεδομένων όπως ο αριθμός κοινωνικής ασφάλισης του πελάτη. Στο παρασκήνιο, η εφαρμογή καλεί ένα ερώτημα SQL που εκτελείται στη βάση δεδομένων διαβάζοντας τις τιμές αναζήτησης που έχουν εισαχθεί ως εξής:
SELECT όνομα_διακομιστή, τηλέφωνο, διεύθυνση, ημερομηνία_καταχώρησης WHERE social_sec_no = 23425
Σε αυτό το σενάριο δειγμάτων, ο χρήστης εισάγει την τιμή 23425 στο παράθυρο του μενού εφαρμογής, ζητώντας από τον χρήστη να εισάγει τον αριθμό κοινωνικής ασφάλισης. Στη συνέχεια, χρησιμοποιώντας την τιμή που παρέχεται από το χρήστη, ένα ερώτημα SQL τρέχει στη βάση δεδομένων.
Ένας χρήστης με γνώσεις SQL μπορεί να κατανοήσει την εφαρμογή και αντί να εισαγάγει μια μόνο τιμή όταν ζητηθεί ο αριθμός κοινωνικής ασφάλισης, πληκτρολογήστε τη συμβολοσειρά "23425 ή 1 = 1", η οποία διαβιβάζεται στη βάση δεδομένων ως εξής:
SELECT όνομα_διακομιστή, τηλέφωνο, διεύθυνση, ημερομηνία_καταχώρησης WHERE social_sec_no = 23425 ή 1 = 1
Η ρήτρα WHERE είναι σημαντική επειδή εισάγει ευπάθεια. Σε μια βάση δεδομένων, η προϋπόθεση 1 = 1 είναι πάντα αληθής και επειδή το ερώτημα έχει οριστεί για να επιστρέψει τα στοιχεία του αριθμού κοινωνικής ασφάλισης πελάτη (23425) ή WHERE 1 = 1, το ερώτημα θα επιστρέψει όλες τις σειρές στον πίνακα, αρχική πρόθεση.
Το παραπάνω παράδειγμα επίθεσης SQL injection είναι απλό, αλλά δείχνει πώς η εκμετάλλευση ενός τρωτού σημείου για να εξαπατήσει την εφαρμογή σε εκτέλεση ενός ερωτήματος ή εντολής βάσης δεδομένων backend.
Οι επιθέσεις SQL injection μπορούν να μετριαστούν με την εξασφάλιση κατάλληλου σχεδιασμού εφαρμογών, ειδικά σε μονάδες που απαιτούν είσοδο χρήστη για την εκτέλεση ερωτημάτων ή εντολών βάσης δεδομένων. Στο παραπάνω παράδειγμα, η εφαρμογή θα μπορούσε να αλλάξει έτσι ώστε να δέχεται μόνο μία αριθμητική τιμή.
