Προστασία και ανίχνευση απο επιθέσεις τύπου SQL injection
Protection and detection of SQL injection attacks
Keywords
MySQL ; SQL ; Βάσεις δεδομένων ; Oracle ; Microsoft SQL Server ; Python ; Databases ; SQL injection ; Cyber attackAbstract
Η προσπάθεια έγχυσης κώδικα με σκοπό να αποκτηθεί παράνομη πρόσβαση, είναι ένα απο τα πιο
φλέγον ζητήματα στην κυβερνοασφάλεια και ειδικότερα στον τομέα του hacking. Σε αυτή την
διπλωματική θα αναφερθούν κάποιες βασικές έννοιες έτσι ώστε και ένας αναγνώστης χωρίς
εξειδικευμένες γνώσεις να μπορεί να συμβαδίζει με την εξέλιξη της διπλωματικής. Θα γίνει
εκτεταμένη έρευνα και εμβάθυνση στο κομμάτι του SQL Injection, όπως για παράδειγμα σε ποιές
κατηγορίες χωρίζεται ή πώς πραγματοποιείται μία τέτοια επίθεση. Στη συνέχεια θα προταθούν
αρκετοί τρόποι προστασίας απο την επίθεση αυτή τόσο κατα την διάρκεια ανάπτυξης μιας
ιστοσελίδας ή μιας βάσης δεδομένων, όσο και αφού έχει πέσει θύμα αυτής. Μετά ακολουθεί η
ανίχνευση, όπου θα αναλυθεί πως μπορούμε να ανιχνεύσουμε ενδεχομένως, μία βάση δεδομένων
ή μία ιστοσελίδα προκειμένου να μην είναι ευάλωτη και τέλος προσεγγίζεται μέσω μιας άλλης
οπτικής η ανίχνευση της SQL Injection όπου θα αναπτυχθεί εργαλείο σε γλώσσα
προγραμματισμού Python, που θα ανιχνεύει αν μία βάση δεδομένων είναι ευάλωτη στην
συγκεκριμένη κατηγορία SQL Injection, error-based δηλαδή βασιζόμενο στα σφάλματα που
μπορεί να επιστρέψει σαν αποτέλεσμα στον χρήστη μία βάση δεδομένων.
Abstract
Attempting to inject code in order to gain illegal access is one of the hottest issues in cybersecurity
and especially in the topic of hacking. In this thesis, some basic definitions will be mentioned, so
that a reader without specialized knowledge can keep up reading and make sense. Extensive
research will be done on the part of SQL Injection such as, in which categories it is divided or how
an attack like this can occur. Later on, there will be suggested a lot of ways to protect a database
during its development as well as after being victim from such an attack. Then follows the
detection, where it will be analyzed how we can possibly detect if a database or a website is
vulnerable and finally on the last chapter the detection of SQL Injection is approached through a
different perspective where a tool written in Python will be developed and will try to detect if a
database is vulnerable to the specific category of SQL Injection, error-based meaning that it is
based on the errors that a database can return as a result to the user.