Το πρώτο βήμα στην κατανόηση του πώς δημιουργείται μια επίθεση SQL ένεση είναι αναπαράγοντας την προβλήματος . Οι SQL ένεση επιθέσεις επιτυγχάνεται μέσω μεταβλητών φόρμας σε μια σελίδα HTML . Δημιουργώντας τη φόρμα επιτρέπει στον webmaster να προσομοιώσει και να δοκιμάσουν την ασφάλεια του web server . Παρακάτω είναι ένα παράδειγμα ενός αντικειμένου φόρμας που χρησιμοποιείται για να δημιουργήσει μια επίθεση SQL ένεση .
Αν και αυτό είναι μια απλή μορφή κειμένου , είναι το μόνο που χρειάζεται για να επιτευχθεί μια ένεση SQL .
εικόνων ο κώδικας Hacker
Η
Όταν οι δηλώσεις SQL γίνεται , η εφαρμογή βασίζεται SQL κώδικα που αποστέλλεται στη βάση δεδομένων . Όταν ένα string αποστέλλονται στη βάση δεδομένων , ο κώδικας μοιάζει κάτι σαν το παρακάτω κείμενο :
επιλέξτε * από MyTable όπου name = ' myVariableFromtheForm »
Το σήμα τσιμπούρι σηματοδοτεί το τέλος του κώδικα SQL , και αυτό είναι όπου στόχος χάκερ . Όταν ένα πλαίσιο κειμένου , όπως αυτή που δημιουργήθηκε στο τμήμα 1 χρησιμοποιείται για να οικοδομήσουμε μια σειρά , ένας χάκερ μπορεί να εισέλθει κάτι σαν το παρακάτω στο πλαίσιο κειμένου :
»ή 1 = 1 ? -
Αυτό μπορεί να μοιάζει σαν ασυναρτησίες , αλλά στην πραγματικότητα εγχέει κώδικα στη βάση δεδομένων που εκτελείται από το διακομιστή . Όταν το " myVariableFromtheForm " αντικαθίσταται από τον παραπάνω κώδικα , η δήλωση τρέχει από το διακομιστή που πράγματι μοιάζει σαν το παρακάτω :
επιλέξτε * από MyTable όπου name = '' ή 1 = 1 - «
η " - " είναι η σχόλια κώδικα για τον SQL Server , έτσι ώστε η τελευταία τερματισμού τσιμπούρι αγνοείται . Η τιμή είναι κενή και ο χάκερ διοχετεύει τον κωδικό " 1 = 1 " στη δήλωση. Αυτό που κάνει είναι να επιστρέψει κάθε γραμμή από τον πίνακα στον hacker . Αυτό είναι το πώς ένα αδίστακτο πρόσωπο κλέβει τις ιδιωτικές πληροφορίες από εξυπηρετητές βάσεων δεδομένων .
Η καθορισμό του προβλήματος
Η
Ο καλύτερος τρόπος για να διορθωθεί το πρόβλημα στον κώδικα που είναι ευπαθή σε ένα hack SQL ένεση είναι να χρησιμοποιήσετε τη λειτουργία "Αντικατάσταση" σε κάθε περίπτωση όπου το κείμενο εισάγεται από τους χρήστες . Για παράδειγμα , σε κώδικα ASP , η ακόλουθη γραμμή κώδικα αντικαθιστά το ενιαίο σήμα τσιμπούρι με δύο . Όταν ένας SQL Server εκτελεί κώδικα με δύο σημαδιών υποδιαίρεσης , να τα διαβάζει σαν γραμματική και το string δεν τερματίζεται
string.Replace ( " " , " '' ")? .
ο παραπάνω κώδικας αντικαθιστά όλες τις εμφανίσεις ενός ενιαίου σήματος τσιμπούρι με δύο , αφαιρώντας την ευπάθεια μιας επίθεσης ένεση SQL .
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα