Είναι το web site σας ασφαλές σε SQL Injection επιθέσεις;




Σύμφωνα με το Wikipedia, το SQL injection είναι μια τεχνική κώδικα injection η οποία ‘εκμεταλλεύεται’ ένα αδύναμο σημείο ασφάλειας που λαμβάνει χώρα στο επίπεδο της βάσης δεδομένων μιας εφαρμογής.


Η ευπάθεια είναι παρούσα όταν η εγγραφή χρήστη έχει φιλτραριστεί λανθασμένα από χαρακτήρες ενσωματωμένους σε SQL statements ή η εγγραφή του χρήστη δεν είναι έντονα δακτυλογραφημένη και έτσι έχουμε ως αποτέλεσμα τη μη σωστή ‘εκτέλεση’ τους. Είναι ένα παράδειγμα μιας περισσότερο γενικότερης κατηγορίας αδύναμων σημείων που μπορεί να συμβεί όταν μια γλώσσα προγραμματισμού είναι μέσα σε μία άλλη. Tα SQL injection attacks είναι γνωστά κ ως SQL insertion attacks. Με απλούς όρους, ο εισβολέας μπορεί να δημιουργήσει μια συγκεκριμένη διεύθυνση URL στο πεδίο ενός website ή web application και να αποσπάσει σημαντικές πληροφορίες από τη βάση δεδομένων όπως το σχέδιο, το σχήμα της βάσης δεδομένων, τις δομές στήλης ή αρχεία τα οποία ενδέχεται να περιέχουν πολύ σημαντικές πληροφορίες, όπως ονόματα χρηστών και κωδικούς. Μια μελέτη δείχνει ότι πάνω από το 60% των web applications που χρησιμοποιούν δυναμικό περιεχόμενο είναι μάλλον ευάλωτα σ’αυτού του είδους την επίθεση. Για να ελέγξετε, αν το website ή το web application σας είναι επιρρεπές στην ‘επίθεση’ αυτή, ακολουθήστε τις απλές οδηγίες παρακάτω:

1. Βρείτε μια διεύθυνση URL στο website ή στο web application σας που μοιάζει με την παρακάτω μορφή:


http://www.yoursite.com/page.php?id=1




2. Έπειτα, τροποποιήστε τη διεύθυνση URL προσθέτοντας το σημείο » ‘ » χωρίς τα εισαγωγικά μπροστά ή πίσω από τον ακέραιο αριθμό. Ελέγξτε το παράδειγμα παρακάτω ως σημείο αναφοράς. Οποιοδήποτε από τα παραδείγματα που περιλαμβάνονται μπορούν να χρησιμοποιηθούν.


http://www.yoursite.com/page.php?id=1'

ή


http://www.yoursite.com/page.php?id='1

3. Τοποθετήστε την τροποποιημένη διεύθυνση URL στο browser σας και ελέγξτε το αποτέλεσμα. Θα υπάρξουν δύο διαφορετικά αποτελέσματα που θα έχουν παραχθεί. Το παραγόμενο αποτέλεσμα θα καθορίσει αν το website ή το web application σας που έχει ελεγχθεί είναι ευάλωτο ή όχι. Αν η σελίδα ‘φορτώσει’ χωρίς κάποιο σφάλμα τότε το website ή το web application σας είναι πιθανό να μην είναι ευάλωτο σε SQL injection attacks. Απ’την άλλη πλευρά, αν η σελίδα δείξει κάποιο σφάλμα όπως αυτό που περιλαμβάνεται ή οποιοδήποτε άλλο, τότε η σελίδα είναι ευάλωτη σ’αυτό το είδος της ‘επίθεσης’.

** SQL query failed ** You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'something' at line 8

Μόλις βρεθεί η σελίδα που έχει την ευπάθεια, μπορεί να απομονωθεί και να διορθωθεί. Παρακάτω υπάρχουν κάποιες πηγές που δείχνουν πως μπορούμε να αποτρέψουμε το SQL Injection Attack στα web applications.

How To: Protect From SQL Injection in ASP.NET

SQL Injection: How To Prevent Security Flaws In PHP / MySQL

How To Prevent PHP Website From SQL Injection

SQL Injection – How To Avoid It


Σημαντική σημείωση: Τροποποίηση και δοκιμή της διεύθυνσης URL δεν προκαλεί καμιά βλάβη στη βάση δεδομένων σας, αλλά θα πρότεινα να κάνετε ένα backup σ’όλα τα αρχεία και τη βάση δεδομένων σας πριν τη δοκιμή. Σε περίπτωση που κάτι πάει στραβά, θα μπορείτε να ανακτήσετε τις πληροφορίες σας απ’τα backups

via: www.web-resources.eu 
Σχόλια