Θανάσιμα αμαρτήματα της ασφάλειας του ιστότοπου: τι μάθαμε από τα στατιστικά στοιχεία του σαρωτή ευπάθειας για το έτος

Πριν από περίπου ένα χρόνο, εμείς στη DataLine ξεκινήσαμε υπηρεσία για αναζήτηση και ανάλυση τρωτών σημείων σε εφαρμογές πληροφορικής. Η υπηρεσία βασίζεται στη λύση cloud Qualys, σχετικά με τη λειτουργία της οποίας έχουμε ήδη πει. Κατά τη διάρκεια ενός έτους εργασίας με τη λύση, πραγματοποιήσαμε 291 σαρώσεις για διαφορετικούς ιστότοπους και συγκεντρώσαμε στατιστικά στοιχεία σχετικά με κοινά τρωτά σημεία σε εφαρμογές ιστού. 

Στο παρακάτω άρθρο θα σας δείξω ακριβώς ποιες τρύπες στην ασφάλεια του ιστότοπου κρύβονται πίσω από διαφορετικά επίπεδα κρισιμότητας. Ας δούμε ποιες ευπάθειες εντόπισε ο σαρωτής ιδιαίτερα συχνά, γιατί μπορεί να εμφανιστούν και πώς να προστατευτείτε. 

Θανάσιμα αμαρτήματα της ασφάλειας του ιστότοπου: τι μάθαμε από τα στατιστικά στοιχεία του σαρωτή ευπάθειας για το έτος

Η Qualys διαιρεί όλα τα τρωτά σημεία των εφαρμογών ιστού σε τρία επίπεδα κρισιμότητας: χαμηλό, μεσαίο και υψηλό. Αν κοιτάξετε την κατανομή κατά "σοβαρότητα", φαίνεται ότι δεν είναι όλα τόσο άσχημα. Υπάρχουν λίγα τρωτά σημεία με υψηλό επίπεδο κρισιμότητας, κυρίως όλα είναι μη κρίσιμα: 

Θανάσιμα αμαρτήματα της ασφάλειας του ιστότοπου: τι μάθαμε από τα στατιστικά στοιχεία του σαρωτή ευπάθειας για το έτος

Αλλά άκριτος δεν σημαίνει ακίνδυνος. Μπορούν επίσης να προκαλέσουν σοβαρές βλάβες. 

Κορυφαία «μη κρίσιμα» τρωτά σημεία

  1. Μικτά τρωτά σημεία περιεχομένου.

    Το πρότυπο για την ασφάλεια του ιστότοπου είναι η μεταφορά δεδομένων μεταξύ του πελάτη και του διακομιστή μέσω του πρωτοκόλλου HTTPS, το οποίο υποστηρίζει κρυπτογράφηση και προστατεύει τις πληροφορίες από την υποκλοπή. 

    Κάποιοι ιστότοποι χρησιμοποιούν μικτό περιεχόμενο: Ορισμένα δεδομένα μεταφέρονται μέσω του μη ασφαλούς πρωτοκόλλου HTTP. Έτσι μεταφέρεται συχνότερα παθητικό περιεχόμενο – πληροφορίες που επηρεάζουν μόνο την εμφάνιση του ιστότοπου: εικόνες, στυλ css. Μερικές φορές όμως μεταδίδεται έτσι ενεργό περιεχόμενο: σενάρια που ελέγχουν τη συμπεριφορά του ιστότοπου. Σε αυτήν την περίπτωση, χρησιμοποιώντας ειδικό λογισμικό, μπορείτε να αναλύσετε πληροφορίες με ενεργό περιεχόμενο που προέρχεται από τον διακομιστή, να τροποποιήσετε τις απαντήσεις σας εν κινήσει και να κάνετε το μηχάνημα να λειτουργεί με τρόπο που δεν προοριζόταν από τους δημιουργούς του. 

    Οι νεότερες εκδόσεις των προγραμμάτων περιήγησης προειδοποιούν τους χρήστες ότι οι ιστότοποι με μικτό περιεχόμενο δεν είναι ασφαλείς και αποκλείουν το περιεχόμενο. Οι προγραμματιστές ιστοτόπων λαμβάνουν επίσης προειδοποιήσεις προγράμματος περιήγησης στην κονσόλα. Για παράδειγμα, έτσι φαίνεται Firefox

    Θανάσιμα αμαρτήματα της ασφάλειας του ιστότοπου: τι μάθαμε από τα στατιστικά στοιχεία του σαρωτή ευπάθειας για το έτος

    Што опасно: Οι εισβολείς χρησιμοποιούν ένα μη ασφαλές πρωτόκολλο για να υποκλέψουν πληροφορίες χρήστη, να αντικαταστήσουν σενάρια και να στείλουν αιτήματα στον ιστότοπο για λογαριασμό του. Ακόμα κι αν ένας επισκέπτης του ιστότοπου δεν εισήγαγε δεδομένα, αυτό δεν τον προστατεύει από phishing – απόκτηση εμπιστευτικών πληροφοριών με δόλιες μεθόδους. Για παράδειγμα, χρησιμοποιώντας ένα σενάριο, μπορείτε να ανακατευθύνετε τον χρήστη σε έναν μη ασφαλή ιστότοπο που μεταμφιέζεται ως γνωστός στον χρήστη. Σε ορισμένες περιπτώσεις, ο κακόβουλος ιστότοπος φαίνεται ακόμα καλύτερος από τον αρχικό και ο χρήστης μπορεί να συμπληρώσει ο ίδιος τη φόρμα και να υποβάλει εμπιστευτικά δεδομένα. 

    Τι πρέπει να θυμάται ένας προγραμματιστής ιστού: Ακόμα κι αν ο διαχειριστής του ιστότοπου έχει εγκαταστήσει και διαμορφώσει ένα πιστοποιητικό SSL/TLS, ενδέχεται να προκύψει ευπάθεια λόγω ανθρώπινου λάθους. Για παράδειγμα, εάν σε μια από τις σελίδες δεν βάλετε έναν σχετικό σύνδεσμο, αλλά έναν απόλυτο σύνδεσμο από το http, και επιπλέον δεν ρυθμίσατε ανακατευθύνσεις από το http στο https. 

    Μπορείτε να εντοπίσετε μικτό περιεχόμενο σε έναν ιστότοπο χρησιμοποιώντας ένα πρόγραμμα περιήγησης: αναζητήστε τον πηγαίο κώδικα της σελίδας, διαβάστε ειδοποιήσεις στην κονσόλα προγραμματιστή. Ωστόσο, ο προγραμματιστής θα πρέπει να ασχοληθεί με τον κώδικα για μεγάλο χρονικό διάστημα και κουραστικά. Μπορείτε να επιταχύνετε τη διαδικασία με εργαλεία αυτόματης ανάλυσης, για παράδειγμα: Έλεγχος SSL, δωρεάν λογισμικό Lighthouse ή λογισμικό επί πληρωμή Screaming Frog SEO Spider.

    Επίσης, η ευπάθεια μπορεί να προκύψει λόγω προβλημάτων με τον κώδικα παλαιού τύπου - κώδικα που κληρονομήθηκε. Για παράδειγμα, εάν ορισμένες σελίδες δημιουργούνται χρησιμοποιώντας ένα παλιό πρότυπο, το οποίο δεν λαμβάνει υπόψη τη μετάβαση των τοποθεσιών στο https.    

  2. Cookies χωρίς τις σημαίες "HTTPOnly" και "secure".

    Το χαρακτηριστικό "HTTPOnly" προστατεύει τα cookies από την επεξεργασία από σενάρια που χρησιμοποιούν οι εισβολείς για να κλέψουν δεδομένα χρήστη. Η σημαία "ασφαλής" δεν επιτρέπει την αποστολή cookies σε καθαρό κείμενο. Η επικοινωνία θα επιτρέπεται μόνο εάν χρησιμοποιείται το ασφαλές πρωτόκολλο HTTPS για την αποστολή cookies. 

    Και τα δύο χαρακτηριστικά καθορίζονται στις ιδιότητες cookie:

    Set-Cookie: Secure; HttpOnly

    Што опасно: Εάν ο προγραμματιστής του ιστότοπου δεν καθόρισε αυτά τα χαρακτηριστικά, ένας εισβολέας θα μπορούσε να υποκλέψει τις πληροφορίες του χρήστη από το cookie και να τις εκμεταλλευτεί. Εάν χρησιμοποιούνται cookies για έλεγχο ταυτότητας και εξουσιοδότηση, θα μπορεί να παραβιάσει τη συνεδρία του χρήστη και να εκτελέσει ενέργειες στον ιστότοπο για λογαριασμό του. 

    Τι πρέπει να θυμάται ένας προγραμματιστής ιστού: Κατά κανόνα, στα δημοφιλή πλαίσια αυτά τα χαρακτηριστικά ορίζονται αυτόματα. Ωστόσο, ελέγξτε τη διαμόρφωση του διακομιστή web και ορίστε τη σημαία: Set-Cookie HttpOnly; Ασφαλής.

    Σε αυτήν την περίπτωση, το χαρακτηριστικό "HTTPOnly" θα κάνει τα cookie αόρατα στη δική σας JavaScript.  

  3. Ευπάθειες βασισμένες σε μονοπάτια.

    Ο σαρωτής αναφέρει μια τέτοια ευπάθεια εάν βρει ένα δημόσια προσβάσιμο αρχείο ή κατάλογο ιστότοπου με δυνητικά εμπιστευτικές πληροφορίες. Για παράδειγμα, ανιχνεύει μεμονωμένα αρχεία διαμόρφωσης συστήματος ή πρόσβαση σε ολόκληρο το σύστημα αρχείων. Αυτή η κατάσταση είναι δυνατή εάν τα δικαιώματα πρόσβασης έχουν οριστεί εσφαλμένα στον ιστότοπο.

    Што опасно: Εάν το σύστημα αρχείων «κολλάει», ένας εισβολέας μπορεί να πέσει στη διεπαφή του λειτουργικού συστήματος και να προσπαθήσει να βρει φακέλους με κωδικούς πρόσβασης, εάν είναι αποθηκευμένοι σε καθαρό κείμενο (μην το κάνετε αυτό!). Εναλλακτικά, μπορείτε να κλέψετε κατακερματισμούς κωδικών πρόσβασης και να προσπαθήσετε να αυξήσετε τα προνόμια στο σύστημα και να προχωρήσετε βαθύτερα στην υποδομή.  

    Τι πρέπει να θυμάται ένας προγραμματιστής ιστού: Μην ξεχνάτε τα δικαιώματα πρόσβασης και διαμορφώστε την πλατφόρμα, τον διακομιστή ιστού, την εφαρμογή Ιστού έτσι ώστε να είναι αδύνατο να «διαφύγετε» από τον κατάλογο Ιστού.

  4. Φόρμες για την εισαγωγή ευαίσθητων δεδομένων με ενεργοποιημένη την αυτόματη συμπλήρωση.

    Εάν ένας χρήστης συμπληρώνει συχνά φόρμες σε ιστότοπους, το πρόγραμμα περιήγησής του αποθηκεύει αυτές τις πληροφορίες χρησιμοποιώντας τη δυνατότητα αυτόματης συμπλήρωσης. 

    Οι φόρμες σε ιστότοπους μπορεί να περιλαμβάνουν πεδία με ευαίσθητες πληροφορίες, όπως κωδικούς πρόσβασης ή αριθμούς πιστωτικών καρτών. Για τέτοια πεδία, αξίζει να απενεργοποιήσετε τη λειτουργία αυτόματης συμπλήρωσης φόρμας στον ίδιο τον ιστότοπο. 

    Што опасно: Εάν το πρόγραμμα περιήγησης του χρήστη αποθηκεύει ευαίσθητες πληροφορίες, ένας εισβολέας μπορεί να τις υποκλέψει αργότερα, για παράδειγμα μέσω phishing. Ουσιαστικά, ένας προγραμματιστής ιστού που έχει ξεχάσει αυτήν την απόχρωση ρυθμίζει τους χρήστες του. 

    Τι πρέπει να θυμάται ένας προγραμματιστής ιστού: Σε αυτήν την περίπτωση, έχουμε μια κλασική σύγκρουση: ευκολία vs ασφάλεια. Εάν ένας προγραμματιστής ιστού σκέφτεται την εμπειρία χρήστη, μπορεί συνειδητά να επιλέξει την αυτόματη συμπλήρωση. Για παράδειγμα, εάν είναι σημαντικό να ακολουθήσετε Οδηγίες προσβασιμότητας περιεχομένου ιστού – συστάσεις για προσβασιμότητα περιεχομένου για χρήστες με αναπηρίες. 

    Για τα περισσότερα προγράμματα περιήγησης, μπορείτε να απενεργοποιήσετε την αυτόματη συμπλήρωση με το χαρακτηριστικό autocompete="off", για παράδειγμα:

     <body>
        <form action="/el/form/submit" method="get" autocomplete="off">
          <div>
            <input type="text" placeholder="First Name">
          </div>
          <div>
            <input type="text" id="lname" placeholder="Last Name" autocomplete="on">
          </div>
          <div>
            <input type="number" placeholder="Credit card number">
          </div>
          <input type="submit">
        </form>
      </body>

    Αλλά δεν θα λειτουργήσει για το Chrome. Αυτό παρακάμπτεται χρησιμοποιώντας JavaScript, μπορεί να βρεθεί μια παραλλαγή της συνταγής εδώ

  5. Η κεφαλίδα X-Frame-Options δεν έχει οριστεί στον κώδικα τοποθεσίας. 

    Αυτή η κεφαλίδα επηρεάζει τις ετικέτες πλαισίου, iframe, ενσωμάτωσης ή αντικειμένων. Με τη βοήθειά του, μπορείτε να απαγορεύσετε εντελώς την ενσωμάτωση του ιστότοπού σας σε ένα πλαίσιο. Για να το κάνετε αυτό, πρέπει να καθορίσετε την τιμή X-Frame-Options: deny. Ή μπορείτε να καθορίσετε X-Frame-Options: sameorigin και, στη συνέχεια, η ενσωμάτωση σε ένα iframe θα είναι διαθέσιμη μόνο στον τομέα σας.

    Што опасно: Η απουσία μιας τέτοιας κεφαλίδας μπορεί να χρησιμοποιηθεί σε κακόβουλους ιστότοπους για να clickjacking. Για αυτήν την επίθεση, ο εισβολέας δημιουργεί ένα διαφανές πλαίσιο πάνω από τα κουμπιά και ξεγελάει τον χρήστη. Για παράδειγμα: απατεώνες πλαισιώνουν σελίδες κοινωνικής δικτύωσης σε έναν ιστότοπο. Ο χρήστης πιστεύει ότι κάνει κλικ σε ένα κουμπί σε αυτόν τον ιστότοπο. Αντίθετα, το κλικ παρεμποδίζεται και το αίτημα του χρήστη αποστέλλεται στο κοινωνικό δίκτυο όπου υπάρχει ενεργή περίοδος σύνδεσης. Αυτός είναι ο τρόπος με τον οποίο οι εισβολείς στέλνουν spam για λογαριασμό του χρήστη ή κερδίζουν συνδρομητές και likes. 

    Εάν δεν απενεργοποιήσετε αυτήν τη δυνατότητα, ένας εισβολέας μπορεί να τοποθετήσει το κουμπί της εφαρμογής σας σε έναν κακόβουλο ιστότοπο. Μπορεί να ενδιαφέρεται για το πρόγραμμα παραπομπής σας ή για τους χρήστες σας.  

    Τι πρέπει να θυμάται ένας προγραμματιστής ιστού: Η ευπάθεια μπορεί να προκύψει εάν το X-Frame-Options με τιμή σε διένεξη έχει οριστεί στον διακομιστή web ή στο πρόγραμμα εξισορρόπησης φορτίου. Σε αυτήν την περίπτωση, ο διακομιστής και ο εξισορροπητής απλώς θα ξαναγράψουν την κεφαλίδα, καθώς έχουν μεγαλύτερη προτεραιότητα σε σύγκριση με τον κώδικα υποστήριξης.  

    Οι τιμές άρνησης και ίδιας προέλευσης της κεφαλίδας X-Frame-Options θα επηρεάσουν τη λειτουργία του προγράμματος προβολής ιστού Yandex. Για να επιτρέψετε τη χρήση iframe για το πρόγραμμα προβολής Ιστού, πρέπει να γράψετε έναν ξεχωριστό κανόνα στις ρυθμίσεις. Για παράδειγμα, για το nginx μπορείτε να το ρυθμίσετε ως εξής:

    http{
    ...
     map $http_referer $frame_options {
     "~webvisor.com" "ALLOW-FROM http://webvisor.com";
     default "SAMEORIGIN";
     }
     add_header X-Frame-Options $frame_options;
    ...
    }
    
    

  6. Ευπάθειες PRSSI (εισαγωγή φύλλου στυλ σχετικής διαδρομής).  

    Αυτή είναι μια ευπάθεια στο στυλ του ιστότοπου. Προκύπτει εάν χρησιμοποιούνται σχετικοί σύνδεσμοι όπως href="/el/somefolder/styles.css/" για πρόσβαση σε αρχεία στυλ. Ένας εισβολέας θα το εκμεταλλευτεί αυτό εάν βρει έναν τρόπο να ανακατευθύνει τον χρήστη σε μια κακόβουλη σελίδα. Η σελίδα θα εισαγάγει έναν σχετικό σύνδεσμο στο url της και θα προσομοιώσει μια κλήση στυλ. Θα λάβετε ένα αίτημα όπως το badsite.ru/…/somefolder/styles.css/, το οποίο μπορεί να εκτελέσει κακόβουλες ενέργειες υπό το πρόσχημα ενός στυλ. 

    Што опасно: Ένας απατεώνας θα μπορούσε να εκμεταλλευτεί αυτήν την ευπάθεια εάν βρει άλλη τρύπα ασφαλείας. Ως αποτέλεσμα, είναι δυνατή η κλοπή δεδομένων χρήστη από cookies ή διακριτικά.

    Τι πρέπει να θυμάται ένας προγραμματιστής ιστού: Ορίστε την κεφαλίδα X-Content-Type-Options σε: nosniff. Σε αυτήν την περίπτωση, το πρόγραμμα περιήγησης θα ελέγξει τον τύπο περιεχομένου για τα στυλ. Εάν ο τύπος είναι διαφορετικός από κείμενο/css, το πρόγραμμα περιήγησης θα αποκλείσει το αίτημα.

Κρίσιμα τρωτά σημεία

  1. Μια σελίδα με πεδίο κωδικού πρόσβασης μεταδίδεται από τον διακομιστή μέσω ενός μη ασφαλούς καναλιού (η φόρμα HTML που περιέχει πεδία κωδικού πρόσβασης προβάλλεται μέσω HTTP).

    Η απάντηση από τον διακομιστή μέσω ενός μη κρυπτογραφημένου καναλιού είναι ευάλωτη σε επιθέσεις "Man in the middle". Ένας εισβολέας μπορεί να παρεμποδίσει την κυκλοφορία και να σφηνωθεί μεταξύ του πελάτη και του διακομιστή καθώς η σελίδα ταξιδεύει από τον διακομιστή στον πελάτη. 

    Што опасно: Ο απατεώνας θα μπορεί να αντικαταστήσει τη σελίδα και να στείλει στον χρήστη μια φόρμα για εμπιστευτικά δεδομένα, η οποία θα πάει στον διακομιστή του εισβολέα. 

    Τι πρέπει να θυμάται ένας προγραμματιστής ιστού: Ορισμένοι ιστότοποι στέλνουν στους χρήστες έναν κωδικό μίας χρήσης μέσω email/τηλεφώνου αντί για κωδικό πρόσβασης. Σε αυτήν την περίπτωση, η ευπάθεια δεν είναι τόσο κρίσιμη, αλλά ο μηχανισμός θα περιπλέξει τη ζωή των χρηστών.

  2. Αποστολή φόρμας με σύνδεση και κωδικό πρόσβασης μέσω μη ασφαλούς καναλιού (Η φόρμα σύνδεσης δεν υποβάλλεται μέσω HTTPS).

    Σε αυτήν την περίπτωση, μια φόρμα με login και κωδικό πρόσβασης αποστέλλεται από τον χρήστη στον διακομιστή μέσω ενός μη κρυπτογραφημένου καναλιού.

    Што опасно: Σε αντίθεση με την προηγούμενη περίπτωση, αυτή είναι ήδη μια κρίσιμη ευπάθεια. Είναι πιο εύκολο να υποκλαπούν ευαίσθητα δεδομένα γιατί δεν χρειάζεται καν να γράψετε κώδικα για να το κάνετε. 

  3. Χρήση βιβλιοθηκών JavaScript με γνωστά τρωτά σημεία.

    Κατά τη σάρωση, η βιβλιοθήκη που χρησιμοποιήθηκε περισσότερο ήταν το jQuery με έναν εκτεταμένο αριθμό εκδόσεων. Κάθε έκδοση έχει τουλάχιστον ένα, ή ακόμα περισσότερα, γνωστά τρωτά σημεία. Ο αντίκτυπος μπορεί να είναι πολύ διαφορετικός ανάλογα με τη φύση της ευπάθειας.

    Што опасно: Υπάρχουν εκμεταλλεύσεις για γνωστά τρωτά σημεία, για παράδειγμα:

    Θανάσιμα αμαρτήματα της ασφάλειας του ιστότοπου: τι μάθαμε από τα στατιστικά στοιχεία του σαρωτή ευπάθειας για το έτος

    Τι πρέπει να θυμάται ένας προγραμματιστής ιστού: Επιστρέφετε τακτικά στον κύκλο: αναζήτηση γνωστών τρωτών σημείων - επιδιόρθωση - έλεγχος. Εάν χρησιμοποιείτε παλαιού τύπου βιβλιοθήκες σκόπιμα, για παράδειγμα για να υποστηρίξετε παλαιότερα προγράμματα περιήγησης ή για να εξοικονομήσετε χρήματα, αναζητήστε μια ευκαιρία να διορθώσετε μια γνωστή ευπάθεια. 

  4. Διασταυρούμενη δέσμη ενεργειών (XSS). 
    Το Cross-Site Scripting (XSS) ή το cross-site scripting, είναι μια επίθεση σε μια εφαρμογή Ιστού που έχει ως αποτέλεσμα την εισαγωγή κακόβουλου λογισμικού στη βάση δεδομένων. Εάν η Qualys εντοπίσει μια τέτοια ευπάθεια, σημαίνει ότι ένας πιθανός εισβολέας μπορεί ή έχει ήδη εισαγάγει το δικό του σενάριο js στον κώδικα του ιστότοπου για να εκτελέσει κακόβουλες ενέργειες.

    Αποθηκευμένο XSS πιο επικίνδυνο, αφού το σενάριο είναι ενσωματωμένο στον διακομιστή και εκτελείται κάθε φορά που ανοίγει η σελίδα που δέχεται επίθεση στο πρόγραμμα περιήγησης.

    Αντανακλά XSS ευκολότερη εκτέλεση, καθώς ένα κακόβουλο σενάριο μπορεί να εισαχθεί σε ένα αίτημα HTTP. Η εφαρμογή θα λάβει ένα αίτημα HTTP, δεν θα επικυρώσει τα δεδομένα, θα τα συσκευάσει και θα τα στείλει αμέσως. Εάν ένας εισβολέας παρεμποδίζει την κυκλοφορία και εισάγει ένα σενάριο όπως

    <script>/*+что+то+плохое+*/</script> 

    τότε θα σταλεί ένα κακόβουλο αίτημα εκ μέρους του πελάτη.

    Ένα εντυπωσιακό παράδειγμα XSS: js sniffers που προσομοιώνουν σελίδες για εισαγωγή CVC, ημερομηνία λήξης κάρτας και ούτω καθεξής. 

    Τι πρέπει να θυμάται ένας προγραμματιστής ιστού: Στην κεφαλίδα Content-Security-Policy, χρησιμοποιήστε το χαρακτηριστικό script-src για να αναγκάσετε το πρόγραμμα περιήγησης-πελάτη να πραγματοποιεί λήψη και εκτέλεση κώδικα μόνο από μια αξιόπιστη πηγή. Για παράδειγμα, το script-src 'self' προσθέτει στη λίστα επιτρεπόμενων όλα τα σενάρια από τον ιστότοπό μας μόνο. 
    Η καλύτερη πρακτική είναι ο ενσωματωμένος κώδικας: επιτρέπεται μόνο η ενσωματωμένη javascript χρησιμοποιώντας την τιμή μη ασφαλή-ενσωμάτωση. Αυτή η τιμή επιτρέπει τη χρήση ενσωματωμένων js/css, αλλά δεν απαγορεύει τη συμπερίληψη αρχείων js. Σε συνδυασμό με το script-src 'self' απενεργοποιούμε την εκτέλεση εξωτερικών σεναρίων.

    Βεβαιωθείτε ότι έχετε καταγράψει τα πάντα χρησιμοποιώντας το report-uri και δείτε τις προσπάθειες να το εφαρμόσετε στον ιστότοπο.

  5. Ενέσεις SQL.
    Η ευπάθεια υποδεικνύει τη δυνατότητα εισαγωγής κώδικα SQL σε έναν ιστότοπο που έχει άμεση πρόσβαση στη βάση δεδομένων του ιστότοπου. Η έγχυση SQL είναι δυνατή εάν τα δεδομένα από τον χρήστη δεν ελέγχονται: δεν ελέγχεται για ορθότητα και χρησιμοποιείται αμέσως στο ερώτημα. Για παράδειγμα, αυτό συμβαίνει εάν μια φόρμα σε έναν ιστότοπο δεν ελέγχει εάν η είσοδος ταιριάζει με τον τύπο δεδομένων. 

    Што опасно: Εάν ένας εισβολέας εισαγάγει ένα ερώτημα SQL σε αυτήν τη φόρμα, μπορεί να καταρρεύσει τη βάση δεδομένων ή να αποκαλύψει εμπιστευτικές πληροφορίες. 

    Τι πρέπει να θυμάται ένας προγραμματιστής ιστού: Μην εμπιστεύεστε ό,τι προέρχεται από το πρόγραμμα περιήγησης. Πρέπει να προστατεύσετε τον εαυτό σας τόσο από την πλευρά του πελάτη όσο και από την πλευρά του διακομιστή. 

    Στην πλευρά του πελάτη, γράψτε την επικύρωση πεδίου χρησιμοποιώντας JavaScript. 

    Οι ενσωματωμένες λειτουργίες σε δημοφιλή πλαίσια βοηθούν επίσης στην αποφυγή ύποπτων χαρακτήρων στο διακομιστή. Συνιστάται επίσης η χρήση παραμετροποιημένων ερωτημάτων βάσης δεδομένων στον διακομιστή.

    Προσδιορίστε πού ακριβώς λαμβάνει χώρα η αλληλεπίδραση με τη βάση δεδομένων στην εφαρμογή Ιστού. 

    Η αλληλεπίδραση λαμβάνει χώρα όταν λαμβάνουμε οποιαδήποτε πληροφορία: ένα αίτημα με ένα αναγνωριστικό (αλλαγή αναγνωριστικού), τη δημιουργία ενός νέου χρήστη, ένα νέο σχόλιο ή νέες εγγραφές στη βάση δεδομένων. Εδώ μπορούν να πραγματοποιηθούν ενέσεις SQL. Ακόμα κι αν διαγράψουμε μια εγγραφή από τη βάση δεδομένων, η ένεση SQL είναι δυνατή.

Γενικές συστάσεις

Μην ανακαλύπτετε ξανά τον τροχό - χρησιμοποιήστε αποδεδειγμένα πλαίσια. Κατά κανόνα, τα δημοφιλή πλαίσια είναι πιο ασφαλή. Για .NET - ASP.NET MVC και ASP.NET Core, για Python - Django ή Flask, για Ruby - Ruby on Rails, για PHP - Symfony, Laravel, Yii, για JavaScript - Node.JS-Express.js, για Java - Ελατήριο MVC.

Ακολουθήστε τις ενημερώσεις προμηθευτών και ενημερώστε τακτικά. Θα βρουν μια ευπάθεια, στη συνέχεια θα γράψουν ένα exploit, θα το κάνουν διαθέσιμο στο κοινό και όλα θα συμβούν ξανά. Εγγραφείτε σε ενημερώσεις σε σταθερές εκδόσεις από τον προμηθευτή λογισμικού.

Ελέγξτε τα δικαιώματα πρόσβασης. Από την πλευρά του διακομιστή, να αντιμετωπίζετε πάντα τον κώδικά σας σαν να γράφτηκε, από το πρώτο έως το τελευταίο γράμμα, από τον πιο μισητό εχθρό σας, ο οποίος θέλει να σπάσει τον ιστότοπό σας, να παραβιάσει την ακεραιότητα των δεδομένων σας. Επιπλέον, μερικές φορές αυτό είναι αλήθεια.

Χρησιμοποιήστε κλώνους, περιοχές δοκιμών και στη συνέχεια χρησιμοποιήστε τους για παραγωγή. Αυτό θα βοηθήσει, πρώτον, να αποφευχθούν λάθη και λάθη σε ένα παραγωγικό περιβάλλον: ένα παραγωγικό περιβάλλον φέρνει χρήματα, ένα απλό παραγωγικό περιβάλλον είναι κρίσιμο. Κατά την προσθήκη, την επιδιόρθωση ή το κλείσιμο οποιουδήποτε προβλήματος, αξίζει να εργάζεστε σε ένα δοκιμαστικό περιβάλλον, στη συνέχεια να ελέγξετε τη λειτουργικότητα και τα τρωτά σημεία που εντοπίστηκαν και, στη συνέχεια, να σχεδιάσετε να εργαστείτε με το περιβάλλον παραγωγής. 

Προστατέψτε την εφαρμογή Ιστού σας με Τείχος προστασίας εφαρμογών ιστού και ενσωματώστε αναφορές από το σαρωτή ευπάθειας με αυτό. Για παράδειγμα, η DataLine χρησιμοποιεί Qualys και FortiWeb ως δέσμη υπηρεσιών.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο